awk
参考:https://blog.csdn.net/anqixiang/article/details/117903529
awk:能够对文本的每一行都进行复杂的格式处理,它支持关系运算符、算法运算符, 正则表达式, if ,while,for等逻辑,是一种处理文本的语言。
基本格式: awk '{pattern + action}' <file>
1、awk 默认分隔符为空格和制表符,输出函数有print和printf, $1、$2...表示分割的字符
举例:
echo "hello my friend,Tom"| awk '{print $1"\n"$2"\n"$3"\n"$4}'
输出:
hello
my
friend,Tom
2、可以使用-F ' ' 指定分割符,如下,指定分割符为' ,'或者空格
举例:
echo "hello my friend,Tom"| awk -F ',| ' '{print $1"\n"$2"\n"$3"\n"$4}'
输出:
hello
my
friend
Tom
3、awk内置变量
$0 - 当前整行
NR - 当前已读行数
NF - 当前行被分割的列数
FILENAME - 当前文件名称
举例:
echo "hello my friend,Tom"| awk '{print $0"\n" NR"\n" NF"\n" FILENAME}'
输出:
hello my friend,Tom
1
3
-
4、关键字 BEGIN:表示在awk程序开始所有的行之前前执行一次;END:表示在awk程序结束所有的行之后执行一次
举例:
awk -F ':' 'BEGIN{print "Begin"} END{print "End"} {if(NR<=3) print $1"\n" NF}' /etc/passwd
输出:
Begin root 7 bin 7 daemon 7 End
开头执行输出"Begin", 最后执行输出"End"
5、if判断
举例:
echo "hello world"|awk '{if($1=="hello") print $2}'
输出:
world