一文学会shell编程4

文本处理

格式化输出

格式化字符
在这里插入图片描述

【示例】:使用printf进行换行

printf "%s\n" 1 2 3 4
输出结果:
1
2
3
4

【示例】:使用printf进行输出小数

printf "%.2f\n" 1 2 3 4
输出结果:
1.00
2.00
3.00
4.00

【示例】:将字符格式化输出

string="姓名 性别 年龄 体重 xiaoA 男 18 120 xiaoB 女 18 100" #等号前后没有空格
printf "% -10s % -10s % -4s % -4s \n" $string  # 注意$与string之间不要有空格
输出:
姓名     性别        年龄   体重 
xiaoA      男        18   120  
xiaoB      女        18   100

sed命令

sed是一个很好的文本处理工具,其本身是一个管道命令,主要是以行为单位进行文本文档的处理,可以将数据行进行替换、删除、新增、选取等特定工作。sed常用选项及功能如下所示:
在这里插入图片描述

【示例】:使用sed命令删除文件select1.sh第一行

文件内容:

#!/bin/bash
echo "what is your favorite os?"
select var in "linux" "Windows" "others"
do
	case $var in
		linux)
			echo "you selected is $var"
		;;
                Windows)
                        echo "you selected is $var"
                ;;
                others)
                        echo "you selected is $var"
                ;;
		*)
			echo input error
			break
		;;
	esac
done

sed '1d' select1.sh
# 可以看到第一行内容#!/bin/bash被删除了
echo "what is your favorite os?"
select var in "linux" "Windows" "others"
do
	case $var in
		linux)
			echo "you selected is $var"
		;;
                Windows)
                        echo "you selected is $var"
                ;;
                others)
                        echo "you selected is $var"
                ;;
		*)
			echo input error
			break
		;;
	esac
done

【示例】:使用sed命令删除文件select1.sh第一行到第三行

sed '1,3d' select1.sh 
# 可以看到1--3行被删除了
do
	case $var in
		linux)
			echo "you selected is $var"
		;;
                Windows)
                        echo "you selected is $var"
                ;;
                others)
                        echo "you selected is $var"
                ;;
		*)
			echo input error
			break
		;;
	esac
done

【示例】:使用sed命令查询文件select1.sh中others所在行

sed -n '/others/p' select1.sh
输出:
select var in "linux" "Windows" "others"
                others)

【示例】:使用sed命令查询文件select1.sh中others替换成sed_others

sed -n '/others/p' select1.sh | sed 's/others/sed_others/g' #s通过正则表达式进行替换
输出:
select var in "linux" "Windows" "sed_others"
                sed_others)

awk命令

作为一款文本处理工具,awk被设计用于数据流,其不仅能够对行进行操作,还可以对列进行操作。awk命令有许多内建的功能,比如数组、函数等,具有很大的灵活性。
语法

awk 'BEGIN { command } { command1 } END { command2 }' file
command是脚本开始执行时执行的命令
command1为脚本执行过程中执行的命令
command2为脚本执行结束时执行的命令
File是需要被处理的文件名称

【示例】:使用awk命令输出/etc/passwd的账户人数

awk '{ count++;print $0; } END { print "user count is",count}' /etc/passwd
输出:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
......
ftp:x:125:129:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin
user count is 48

文本内容比较

diff命令能够对两个文件进行详细的对比,并将差异结果进行重点标记,输出到文件中。输出到的文件成为被修补文件(patch file),其中包含了修改过的、添加、删除的行及行号,用户可以通过修补文件对源文件进行更改。
语法:

diff ver1 ver2
ver1和ver2是要对比的两个文件,对比结果会输出到终端中,也可以采用重定向的方式将输出保存到任意位置

【示例】:比较ver1与ver2的不同

ls -l > ver1  #使用重定向创建两个文件,内容为当前目录的文件及属性
ls -l > ver2
diff ver1 ver2   # 使用diff命令查看文件内容不同的地方

输出:
1c1         #第1个1代表第一个文件中的第1行;c代表change,即改变;第2个1代表第二个文件的第1行

< 总用量 60        # <符号代表第一个文件
---            # 上边是第一个文件,下边是第二个文件
> 总用量 64       
16c16,17
< -rw-rw-r-- 1 xing xing   0 827 12:08 ver1
---
> -rw-rw-r-- 1 xing xing 823 827 12:08 ver1
> -rw-rw-r-- 1 xing xing   0 827 12:08 ver2

over!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值