如何将文本文件中的字符串替换为另一个字符串

如何将文本文件中的字符串替换为另一个字符串

我想将文本文件中的给定字符串替换为另一个字符串,但有一个额外的细节。

例子:

如果文件内容是:

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,如果可以就进行更改。

相关内容