2013-02-12 34 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

相關問題