【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 "打印格式" 打印内容
