我想将文本文件中的给定字符串替换为另一个字符串,但有一个额外的细节。
例子:
如果文件内容是:
Library Hello1
===============
any text here
version: 0.1
--------------
Library Hello2
===============
any text here
version:0.1
--------------
Library Hello3
===============
any text here
version: 0.2
--------------
我想要包含grep
“图书馆”一词的所有行,并将所有“图书馆”替换为其他单词,例如。 “myStr”。但是,这只应针对版本为 0.1 的版本执行此操作。所有其他的都应该被忽略。
请注意,搜索/替换应在每个代码块内完成。这些块由 ===== 和 ----- 分隔。
注意:我可以进行搜索和替换,但我不知道如何同时搜索块内的版本。
答案1
你可以试试这个sed
sed '/^Library/!b;:A;N;/version/!bA;/0\.1$/s/^Library/myStr/' infile
首先寻找图书馆。
如果找到以下所有行,直到版本。
当find时寻找0.1,如果可以就进行更改。