bash(sed / awk?)在文件中找到行并在上面打印3行?

时间:2013-02-12 00:06:23

标签: bash awk

我想在txt文件中找到一行,然后在找到的行

上面插入3行

输入:

aaa
bbb
ccc
ddd
eee
fff

我想找“eee”,然后在它上方打印“WWW”3行。输出:

aaa
WWW
bbb
ccc
ddd
eee
fff

我正在使用awk并且只能在“eee”上方打印“WWW”1行,而不是3:

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

任何想法?

1 个答案:

答案 0 :(得分: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