テキストファイルの特定の文字列を追加の詳細を含む他の文字列に置き換えたいと思います。
例:
ファイルの内容が次の場合:
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
「library」という単語を含むすべての行が必要で、すべての「library」を別の単語に置き換えようとしています。 「myStr」。ただし、これはバージョン0.1でのみ実行する必要があります。他のすべては無視する必要があります。
検索/置換は各コードブロック内で実行する必要があります。このブロックは ===== と ----- で区切られます。
注:検索と置換を実行できますが、同時にブロック内でバージョンを検索する方法がわかりません。
答え1
このsedを試すことができます
sed '/^Library/!b;:A;N;/version/!bA;/0\.1$/s/^Library/myStr/' infile
図書館を探すことから始めましょう。
次の行がすべて見つかったら、バージョンまでです。
find が 0.1 を探し、可能であれば変更します。