awk 笔记

来源:互联网 发布:java 字节码 编辑:程序博客网 时间:2024/04/20 04:34
 

1. awk '/pattern1/,/pattern2/' file

打印 匹配pattern1的行-->匹配pattern2的行;中间的逗号用于指示范围。

((匹配后的默认操作就是打印,也可以再后面加上命令,并用{}包含这些命令。))

同样效果的sed的命令是:sed -n '/pattern1/,/pattern2/ p'

匹配模式是一样的;sed默认会打印读到的每一行,用-n进行抑制;打印匹配的行用命令p来执行。 

 

2.awk '!/pattern/{print $0}'

打印 不匹配pattern的行($0代表整行)

 

3. awk '{a[NR]=$0} END{for(i=p-3;i<p;i++) printf a[i] RS}' file

把读取的每一行保存到数组a[]中,并打印。

 

4. awk '/ddd/{p=1;x=NR} p&&NR-x<=3&&NR-x>0' file

这条命令打印匹配ddd后的3行;

可以添加其他条件,默认打印匹配的行,/ddd/和p&&NR-x<=3&&NR-x>0 是两个独立的匹配,只要匹配可以执行跟着对应的命令,所以可以给后者添加对应的命令:

awk '/ddd/{p=1;x=NR} p&&NR-x<=3&&NR-x{print $1}' file

这条命令摘自http://bbs3.chinaunix.net/viewthread.php?tid=1857159,有不少好例子。

可以这么写,awk '1' file,1表示true,默认打印所有行;有命令的条件下,默认也是条件成立,awk '{print $1}' file,也可以;但是没有命令时,awk '' file,什么也不会输出。

 

 

 

选项:

-F:-F: 指定分隔符

原创粉丝点击