grep,sed,awk被称为linux中的“三剑客”
grep更适合单纯的查找或匹配文本。
sed更适合编辑匹配到的文本。
awk更适合格式化文本,对文本进行复杂格式处理。
awk是一个报告生成器,我们可以利用awk命令将一些文本整理成我们想要的样子。
awk可以看作一门编程语言,它支持条件判断,数组,循环等功能。
awk语法:awk [options] 'Pattern{Action}' file1,file2,'''
awk最常用的action就是print和printf,如下:
awk还可以输出文件的具体列数,如下所示“$1” 表示输出test1文件按照分割符分割后的第1列,不指定分隔符时,默认指定分隔符为空格,默认的换行符为回车。
$0表示显示整行,$NF表示当前行分割后的最后一列($0和$NF均为内置变量),$NF表示最后一个字段,NF表示当前行被分隔符切开后一共有几个字段。以上述test1文件为例,$NF为最后一列,NF为3.
注,输出多行时,如果{}表达式中按照空格分开$1,$2,则print最后的结果第一列第二列中间将没有分隔符,只有用”,“在{}表达式中将$1 $2分开,最后输出的结果将按照默认分隔符,即空格分开,此外也可以自己添加字符。如下:
$1这种内置变量的外侧不能加入双引号,否则$1会被当作文本输出。
awk包含两种特殊的模式:BEGIN 和END
BEGIN 模式指定列处理文本之前需要执行的操作,END模式指定了处理完所有行之后所需要执行的操作。