2013-02-12 47 views
0

我想找到一个txt文件中的一行,然后插入串发现线以上3线bash(sed/awk?)找到文件中的行并在上面打印3行?

输入:

aaa 
bbb 
ccc 
ddd 
eee 
fff 

我想寻找“EEE”,然后打印“WWW” 3在它上面的线。输出:

aaa 
WWW 
bbb 
ccc 
ddd 
eee 
fff 

我使用的awk,只能打印 “WWW” 1线以上 “EEE”,而不是3:

awk '/eee/{print "WWW"} 4' file.txt 

什么想法?

+1

这是可能的,但相当复杂。你能解释为什么你需要它吗?也许有更好的方法来做,而不需要缓冲输出线。 – 2013-02-12 00:15:28

+0

这是我正在处理的一些文本的快速修复..我想如果我可以在上面插入一行,不应该有一个简单的方法来插入上面的3行? – user1899415 2013-02-12 00:21:14

回答

1

方式一:

awk '{a[NR]=$0;}/eee/{a[NR-3]="www\n" a[NR-3];}END{for(i=1;i<=NR;i++)print a[i];}' file 
+0

这个作品,谢谢!!!你知道我怎么能匹配多行?我试过:/ eee \ nfff /但它不起作用! – user1899415 2013-02-12 00:59:05

相关问题