Shell-Script

清除兩個特定行之間的文本並添加新值

  • October 15, 2022

我自己在寫一個腳本。但我需要你的幫助

我有一個如下文件(test.md):

sometext
sometext

<!--SEPERATOR1-->
text to be deleted
foobar to be deleted
foooooooooooobar
foobaaaaaaaaaaar
<!--SEPERATOR1-->

sometext
sometext

我想清理此文本文件(test.md)中由“SEPERATOR1”分隔的部分中的文本並添加新文本。我該怎麼做,謝謝。

預期輸出:

sometext
sometext

<!--SEPERATOR1-->
new text
butterfly
foo bar etc.
<!--SEPERATOR1-->

sometext
sometext

您可以使用命令sed指定範圍來更改文本:/startpattern/,/endpattern/``c

sed '/<!--SEPERATOR1-->/,/<!--SEPERATOR1-->/c<!--SEPERATOR1-->\nnew text\nbutterfly\nfoo bar etc.\n<!--SEPERATOR1-->' filename.txt

用於\n結果中的換行符。

您可以> newfilename.txt在末尾添加以將輸出重定向到文件,或添加-i標誌以更改文件(儘管具體語法因 sed 版本而異)。

但我是否也可以建議更改SEPERATORSEPARATOR- 如果其他人在以後必須維護您的程式碼,而後者使用更“傳統”的拼寫方法,甚至可能是您的舊版本,這樣的事情可能會非常煩人。

引用自:https://unix.stackexchange.com/questions/721093