awk

发布时间 2023-11-22 15:44:33作者: ho966

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"