テキストの行を一致するテキストに置き換える

テキストの行を一致するテキストに置き換える

オリジナルファイル

123|abc|heloo good morning friends|1|123|abc|123|abc
123|abc|heloo good morning everyone|1|123|abc|123|abc

置き換えられたファイル

123|abc|heloo good morning freinds|1|123|abc|123|abc
123|abc|this is what i want to see|1|123|abc|123|abc

ご覧のとおり、区切り記号はです|。ブロックに「Everyone」という単語が含まれている場合は、その特定のブロックを「私が見たいものは次のとおりです」に変更する必要があります。

ベストアンサー1

フィールドを繰り返しながら一致することを確認してください。

awk 'BEGIN{FS=OFS="|"}
     {for (i=1; i<=NF; i++)
           if ($i ~ "everyone") $i="this is what i want to see"
      print}' file

出力を表示します。

$ awk 'BEGIN{FS=OFS="|"} {for (i=1; i<=NF; i++) if ($i ~ "everyone") $i="this is what i want to see"; print}' file
123|abc|heloo good morning friends|1|123|abc|123|abc
123|abc|this is what i want to see|1|123|abc|123|abc

より慣用的な方法でif条件を次のように作成し、実際の($i ~ "everyone") && $i="this is what i want to see"条件を使用してその行を印刷できます。

awk 'BEGIN{FS=OFS="|"} {for (i=1; i<=NF; i++) ($i ~ "everyone") && $i="this is what i want to see"} 1' file

おすすめ記事