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: 指定分隔符