awk命令

回复 收藏

2.6 awk命令-1

上面也提到了awk和sed一样是流式编辑器,它也是针对文档中的行来操作的,一行一行的去执行。awk比sed更加强大,它能做到sed能做到的,同样也能做到sed不能做到的。

1,截取文档中的某个段: awk -F ':' '{print $3}' 1.txt

-F 选项的作用是指定分隔符,如果不加-F指定,则以空格或者tab为分隔符。 Print为打印的动作,用来打印出某个字段。$1为第一个字段,$2为第二个字段,依次类推,有一个特殊的那就是$0,它表示整行。

awk的格式,-F后紧跟单引号,然后里面为分隔符,print的动作要用 { } 括起来,否则会报错。print还可以打印自定义的内容,但是自定义的内容要用双引号括起来。

打印第3和第4段:awk -F ':' '{print $3,$4}' 1.txt (段间为空格)

指定段间分隔符:awk -F ':' 'OFS=":" {print $3,$4}' 1.txt,

2,匹配字符或字符串 : 如打印含user的行awk '/user/' 1.txt

awk可以使用特殊字符不需要脱意: awk -F ':' '$1~/r*o|nobody/ {print $1,$3}' 1.txt

awk '/r*o/' 1.txt  ; awk '/(oo)/' 1.txt 不支持{}

awk可以让某个段去匹配,这里的’~’就是匹配的意思

打印出第一段包含r*o的行: awk -F ':' '$1~/r*o/' 1.txt

打印出第一段包含r*o的行的第三段: awk -F ':' '$1~/r*o/ {print $3}' 1.txt

多次匹配:

awk -F ':' '$1~/r*o/ {print $1,$3}; $1~/nobody/ {print $1,$3}' 1.txt (两个规则)

同时满足则打印两次

只打印一次:awk -F ':' '$1~/r*o|nobody/ {print $1,$3}' 1.txt (1个规则)

2.7 awk命令-2

条件操作符

awk中是可以用逻辑符号判断的,比如 ‘==’ 就是等于,也可以理解为 ‘精确匹配’ 另外也有 >, ‘>=, ‘<, ‘<=, ‘!= 等等,值得注意的是,即使$3为数字,awk也不会把它当数字看待,它会认为是一个字符。所以不要妄图去拿$3当数字去和数字做比较。

打印出第一段是nobody的行:awk -F ':' '$1=="nobody"' 1.txt

打印出第三段大于或等于500的行:awk -F ':' '$3>=500' 1.txt

打印出第七段不等于/sbin/nologin的行: awk -F ':' '$7!="/sbin/nologin"' 1.txt

!= 和!~为不匹配

比较:打印出第三段小于第四段的行: awk -F ':' '$3<$4' 1.txt

可以使用 && 和 || 表示 “并且” 和 “或者”

awk -F ':' '$3>"5" && $3<"7"' /etc/passwd

awk -F ':' '$3>"5" || $7=="/bin/bash"' /etc/passwd

2.8 awk命令-3

awk的内置变量 :NF NR OFS

awk常用的变量有:

NF :用分隔符分隔后一共有多少段

NR :行数

打印出前9行:awk -F ':' 'NR<10' 1.txt

打印第10行的第1和第7段: awk -F ':' '{if(NR==10) print $1,$7}' 1.txt

打印出文档有多少段:awk -F ':' '{print NF}' 1.txt

如果有7段则打印第1和第7段: awk -F ':' '{if(NF==7) print $1,$7}' 1.txt

$NF是最后一段的值, $NR依次打印出第1-7段(最多7段时):awk -F ':' '{print $NR,$NF}' 1.txt

awk中的数学运算

awk -F ':' 'OFS=":" {$7=$3+$4;print $3,$4,$7}' 1.txt

文本文档只要某个段有改变再打印,则默认以空格为分隔符

awk -F ':' '$7=$3+$4' 1.txt

计算第3段的和:awk -F ':' '{(sum=sum+$3)}; END {print sum}' 1.txt

END表示所有的行都已经执行,这是awk特有的语法,其实awk连同sed都可以写成一个脚本文件,而且有他们特有的语法,在awk中使用if判断、for循环都是可以的

awk -F ':' '{if ($1=="root") print $0}' /etc/passwd

2016-12-05 17:42 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: