我有文本作爲文件如下:如何使用sed的選擇性更換某些行
Line 1
Line 2
WORD1
Line3
Line 4
WORD2
Line5
我想更換WORD1和WORD2之間的所有行產生最終的輸出:
Line 1
Line 2
NEW
LINES
XXXXX
Line5
With sed '/WORD1/,/WORD2/d' input.txt
我可以刪除這些行,但是如何替換它們而不是刪除它們?
我有文本作爲文件如下:如何使用sed的選擇性更換某些行
Line 1
Line 2
WORD1
Line3
Line 4
WORD2
Line5
我想更換WORD1和WORD2之間的所有行產生最終的輸出:
Line 1
Line 2
NEW
LINES
XXXXX
Line5
With sed '/WORD1/,/WORD2/d' input.txt
我可以刪除這些行,但是如何替換它們而不是刪除它們?
如果AWK是確定的,那麼試試這個:
awk '/WORD1/{p=1; print "NEW\nLINES\nXXXXX"}; !p; /WORD2/{p=0}' file
方式一:
替換文本文件:
$ 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)。
這可能爲你工作(GNU SED):
sed '/WORD1/,/WORD2/c\NEW\nLINES\nXXXXX' file
它使用的範圍內匹配和c
(其他城市)命令。
嘗試'sed'/WORD1/,/WORD2/{s/.*/foo/}'文件' –
@AvinashRaj將爲每一行之間打印相同的內容。試試'sed'/ WORD1/{:1; N;/WORD2 /!b1; s /.*/ foo /}'' – 123