我在文件中有如下文字:
Line 1
Line 2
WORD1
Line3
Line 4
WORD2
Line5
我想替换WORD1和WORD2之间的所有行以产生最终输出:
Line 1
Line 2
NEW
LINES
XXXXX
Line5
使用sed '/WORD1/,/WORD2/d' input.txt
我可以删除这些行,但是如何替换它们而不是删除它们?
答案 0 :(得分:1)
一种方式:
替换文字文件:
$ cat rep
NEW
LINES
XXXXX
输入文件:
$ cat file
Line 1
Line 2
WORD1
Line3
Line 4
WORD2
Line5
sed命令:
$ sed '/WORD1/,/WORD2/{
> /WORD2/r rep
> d
> }' file
sed命令将行格式WORD1分解为WORD2并删除这些行(d),遇到WORD2时,它会转储替换文件内容(r rep)。
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed '/WORD1/,/WORD2/c\NEW\nLINES\nXXXXX' file
这使用范围匹配和c
(更改)命令。
答案 2 :(得分:0)
如果awk没问题,那就试试这个:
awk '/WORD1/{p=1; print "NEW\nLINES\nXXXXX"}; !p; /WORD2/{p=0}' file