首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

awk 一些适用的用法

2012-09-18 
awk 一些实用的用法在awk中 ,需要注意以下的几个简写$0 ? ?//显示所有$1 ? ?//显示第一列$2 ? ?//显示第二

awk 一些实用的用法

在awk中 ,需要注意以下的几个简写

$0 ? ?//显示所有

$1 ? ?//显示第一列

$2 ? ?//显示第二列

以此类推

?

?

awk '{print $1,$2}' /etc/fstab ? ? ?

显示/etc/fstab文件的 第一, 第二列

?

awk 'BEGIN {print "yes,this is begining\n"} {print?$1,$2}' /etc/fstab ??

显示/etc/fstab文件的 第一, 第二列,并在开头的地方加上指定的语句

?

?

awk 'END {print "yes,this is begining\n"} {print?$1,$2}' /etc/fstab ??

显示/etc/fstab文件的 第一, 第二列,并在尾部的地方加上指定的语句

?

awk '{if($2~/roc/) print $0}' /etc/fstab

精确查找,寻找在/etc/fstab中 第二列 含有 roc 字符的 字符,并输出整行

可以理解为 如果$2 匹配 roc 则打印出整行

?

等同于?

awk '$2~/roc/' /etc/fstab

?

awk '$2=="\/proc" {print $0}' /etc/fstab

查找第二列等于 /proc ,并输出整行

?

awk '$2!=="/proc" {print $0}' /etc/fstab

加上!表示取反,也就输出除开第二列是/proc的所有行

?

?

awk '$0~/[Pp]ro/ {print $1,$2 "hello word"}' /tmp/test?

[]表示只要匹配里面内容任意一个即可或是没有匹配到里面的内容

?

?

awk '{if($5>0) print $0 "yes"}' /tmp/test?

如果第五列的值大于 0 则输出所有,并在尾部加上字符串 yes

?

?

awk '{if($0~/(pts|log)/) print $0}' /tmp/test?

等同于

awk '$0~/(pts|log)/' /tmp/test

匹配整行是否含有pts或是log字符

?

awk '{if($2~/(pts|log)/ && $3=="devpts") print $0}' /tmp/test?

加多一个相与的条件

?

NR打印出文件的记录个数

awk '{print $0} END {print "count:" NR}' /tmp/test ??

可在最后打印出有多少行

?

NF 表示有多少列

?

?

echo $PWD | awk -F/ ' {print $NF}'

$PWD 为linux的内置变量,其值为当前路径,

-F/ 表示以/为分隔符

$NF 表示为最后一个元素

最终的结果是取出当前的文件夹名字

echo $PWD | awk -F/ ' {print $2}' ?//则表示 获取的是第二个元素?

?

ll /aclog/bugreport/ |awk '{if($1~/-/) print $NF}'?

获取指定目录下第一列 含有 - 字符的 文件名

?

ll | awk 'BEGIN {NUM=17} {if($7>NUM) print $9}'

先在 BEGIN中定义一个变量

?

ll |awk '{$10=$7+1;print $0}'

本来是没有第10列的,然后新增一个域,且值为 $7+1

?

ll |awk '{total+=$7;print $7};END {print "total:" total}'

统计第7列的总和,并在结尾打印出来

?

?

?

awk 'gsub(/none/,"hehe")' /tmp/test?

替换,gsub(r,s) ,s替换r

?

sed 's/none/hehe/' /tmp/test?

以上两句话的作用差不多,但是awk只显示含有none的行,sed则会显示所有行

?

热点排行