【sed 工具】
sed
工具具有对数据进行替换、删除、新增、选取特定行等功能,其命令格式为:sed [选项] [动作]
常见的选项有:
- -n:使用安静模式,只有经过
sed
特殊处理的一行才被显示出来 - -e:在命令行模式上进行
sed
的动作编辑 - -f:将
sed
的动作写在一个文件内,通过 -f file 来执行 file 内的动作 - -r:使
sed
的动作支持扩展正则表达式,默认情况下仅支持基础正则表达式 - -i:直接修改读取的文件内容,不经过屏幕输出
而对于 sed
命令的动作,其格式为:[n1[,n2]] function
其中,n1
与 n2
不一定会出现,一般代表选择进行动作的行数,function
代表动作行为,具有下述参数:
- a:新增,后接字符串,这些字符串会在当前行的下一行出现
- i:插入,后接字符串,这些字符串会在当前行的上一行出现
- c:替换,后接字符串,这些字符串会替换
n1
到n2
之间的行 - s:替换,通常搭配正则表达式使用,格式为
"s/要被替换的字符串/新字符串/g"
- p:打印,将某个选择的数据打印出来,通常与
sed -n
搭配使用 - d:删除
【awk 工具】
awk
也是一个数据处理工具,相较于 sed
工具直接对行进行处理,awk
工具偏向于将一行分为数个字段来处理
awk
工具的命令格式为:awk "条件类型1{动作1} 条件类型2{动作2}..." filename
简单来说,在 awk
后接上两个单引号并加上大括号 {}
即可设置对数据进行的处理动作
在 awk
中,每一行的每个字段都是有一个变量名称的,依次是 $1
、$2
等,而 $0
代表的是一整行的数据,可以发现,awk
是以行为一次处理单位的,在一行中又是以一个字段为处理单位的
整个 awk
的处理流程如下:
- 读入第一行,并将第一行的数据依次填入
$0
、$1
、$2
等变量中 - 依据条件类型的限制,判断是否进行后续的动作
- 做完所有的动作与条件类型
- 若还有后续的行,重复上述步骤,直到所有数据处理完为止
【格式化打印】
有时需要将数据进行格式化输出,此时可采用 printf
命令来进行格式化打印,该命令类似于 C 语言中的 printf()
函数
printf
命令格式为:printf "打印格式" 打印内容