awk工具的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk工具的使用相关的知识,希望对你有一定的参考价值。
awk工具的使用
awk也是流式编辑器,针对文档中的行来操作,一行 一行的执行。
截取文档中的某个段:
head -n2 test.txt | awk -F ‘ : ‘ ‘{print $1}‘
本例中,-F 选项的作用是指定分隔符。print为打印的动作,用来打印某个字段,
$1为第一个字段,$2为第二个字段,以此类推。$0表示整行。
head -n2 test.txt |awk -F ‘ : ‘ ‘ print $0}‘
注意awk的格式,-F后面紧跟单引号,单引号里面是分隔符。print的动作要用{}括起来。否则会报错。print还可以打印自定义内容,但自定义的内容要用双引号括起来,如下所示:
head -n2 test.txt | awk -F ‘ : ‘ ‘{print $1 "#" $2 "#" $3 "#" $4}‘
匹配字符或者字符串
awk ‘/oo/‘ test.txt
awk -F ‘ : ‘ ‘$1 ~/oo/‘ test.txt
awk -F ‘ : ‘ ‘ /root/ {print $1,$3} /test/ {print $1,$3}‘ test.txt
条件操作符
awk -F ‘ : ‘ ‘$3=="o" ‘ /etc/passwd #不加双引号则会认为是数字
awk -F ‘ : ‘ ‘$3>=500‘ /etc/passwd #把uid大于等于500的行打印出来
awk -F ‘ : ‘ ‘$3<$4‘ /etc/passwd #两个字段之间进行逻辑比较
awk -F ‘ : ‘ ‘$>"5" && $3<"7" /etc/passwd
awk -F ‘ : ‘ ‘ $>1000 || $3=="/bin/bash" ‘ /etc/passwd
awk的内置变量
awk常用变量有OFS、NF和NR,OFS和-F选项有类似的功能,也是用来定义分隔符的,但是它是在输出的时候定义,NF表示用分隔符分隔后一共有多少段,NR表示行号。
head -5 /etc/passwd | awk -F ‘ : ‘ ‘{OFS="#"} {print $1,$3,$4}‘
awk -F ‘ : ‘ ‘{OFS="#“}{if ($3>1000) {print $1,$2,$3,$4}}‘ /etc/passwd
head -n3 /etc/passwd | awk -F ‘ : ‘ ‘{print NF}‘
head -n3 /etc/passwd | awk -F ‘ : ‘ ‘{print $NF}‘
head -n3 /etc/passwd | awk -F ‘ : ‘ ‘{print NR}‘
awk ‘NR>40‘ /etc/passwd
awk -F ‘ : ‘ ‘NR<20 && $1 ~ /roo/‘ /etc/passwd
awk中的数学运算
head -n 3 /etc/passwd | awk -F ‘ : ‘ ‘$1="root" ‘
head -n2 /etc/passwd
awk -F ‘ : ‘ ‘{(tot=tot+$3)}; END {print $0}}‘ /etc/passwd
以上是关于awk工具的使用的主要内容,如果未能解决你的问题,请参考以下文章