ファイル内の特定の行に末尾の単語を追加する

ファイル内の特定の行に末尾の単語を追加する

例えば、このような行が多数含まれたファイルがあります

AAA ATAGSGSGS
BBB Thhahahahahs
CCC lmmmmm
DDD GAGAGAGAGA

AAA IIIII
BBB OOOO
CCC YYYYY

...等々

CCC で始まるすべての行の末尾に特定の単語を追加したい。

たとえば、「smile」という単語を追加したいので、結果は次のようになります。

AAA ATAGSGSGS
BBB Thhahahahahs
CCC lmmmmm smile
DDD GAGAGAGAGA

AAA IIIII
BBB OOOO
CCC YYYYY smile

どうすればそれができるのか教えていただけますか?

答え1

sed -i.backup '/^CCC/s/$/ smile/' data.txt

この sed コマンドとプログラムの詳細:

  1. sed -i.backupインプレースモード - 入力ファイルを編集し、(オプションで)サフィックス(.backup)付きの元のファイルをバックアップします。
  2. /^CCC/検索する正規表現 - ^CCC で始まる ( ) 文字列。
  3. s/$/ smile/文字列の末尾 ( s/$/) を検索し、smile ( smile/) に置き換えます。

答え2

試す:

sed -E 's/^(CCC.+)/\1 smile/' <data.in >data.out

次の場所で編集することもできます:

sed -i -E 's/^(CCC.+)/\1 smile/' data.dat

関連情報