最近、これと非常によく似た質問がありましたが、その特定のケースの解決策について十分なフィードバックを提供できませんでした。より多くの情報と背景を含む質問を開きます。
2つのファイルがあります。
ファイル1:
not_keyword: 'something'
keyword: 'condition'
another_not_keyword: 'something'
ファイル2:
condition 1 condition 2 condition 3
次のすべての項目を見つけたいですkeyword
。ファイル1そしてその内容を交換してください(健康状態)内容があるファイル2。
この場合、希望の出力は次のようになります。
not_keyword: 'something'
keyword: 'condition 1 condition 2 condition 3'
another_not_keyword: 'something"
私の意図は、適切な場所(ファイル自体から直接)で交換が行われるようにすることです。 gawkを使用したソリューションが提供されましたが、残念ながら、sedまたはawk以外には使用できません。
ベストアンサー1
Awk
方法:
awk '$1=="keyword:"{ getline k < "file2"; print $1, "\047" k "\047"; next }1' file1
出力:
not_keyword: 'something'
keyword: 'condition 1 condition 2 condition 3'
another_not_keyword: 'something'
代わりにsed
内部置換を使用します。
$ sed -Ei "s/^(keyword: ).*/\1'$(cat file2)'/" file1