• 締切済み

grepやsed,shプログラムによるデータの整形

grep や sed などのコマンドを使ってデータの整形をしたいと思っています。 具体的には、以下のように先頭の2字(A-Z)を「hello world」に置き換えて、 かつ全行に「 good bye」を追加したいです。 元のデータ(1.txt) を整形して 2.txt として出力し保存したいと思います。 どのようにコマンドを駆使すれば可能でしょうか。 コマンド一発でなくても shでさらさらっと書いて実現できれば それでも無問題ですので、サンプルプログラムをご提示頂けましたら大変嬉しいです。 アドバイス宜しく御願いいたします。 #元のデータ(1.txt) AA 111111.111/111 AC 22/2222222.2222 AA 33333/3333333 BB 44444.4444/444 AK 5/55555.5555 GB 66/666.666666 CC 77.7.777.77/777 #整形後のデータ (2.txt) hello world 111111.111/111 good bye hello world 22/2222222.2222 good bye hello world 33333/3333333 good bye hello world 44444.4444/444 good bye hello world 5/55555.5555 good bye hello world 66/666.666666 good bye hello world 77.7.777.77/777 good bye

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

sedのバージョンにもよりますが、 sed 's/^../hello world/;s/$/ good bye/' 1.txt > 2.txt か sed -e 's/^../hello world/' -e 's/$/ good bye/' 1.txt > 2.txt

tanpopo012
質問者

お礼

両方ともうまくいきました!ありがとうございました。

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

・ 詳しいわけではないのですが、次のように2回で変換してみました。 sed '1,$s/^../hello world/' 1.txt | sed '1,$s/$/ good bye/' > 2.txt

tanpopo012
質問者

お礼

完璧です。ありがとうございました!

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>アドバイス宜しく御願いいたします。 まずは自分で書いてみてから質問するとよいでしょう。

関連するQ&A