• 締切済み

シェルスクリプト(bash)によるファイルの編集

シェルスクリプト(bash)によるファイルの編集についてのご相談です。 私にあまりスクリプトの知識がないので申し訳ございませんが、 どなたかお知恵を拝借させてください。 よろしくお願いします。 【条件】 ・以下のような文字列を含むファイルが複数あるとします。 ・そして、その文字列は、ファイル内の不特定の行に存在します。 ※[半角スペース]、[タブ]は実際には便宜上記載していますが、実際は 本当の半角スペース、タブが入ります。 AAA[半角スペース]BBB AAA[半角スペース]CCC AAA[タブ]BBB AAA[タブ]CCC 【やりたいこと】 このとき、 AAA[半角スペース]BBB および AAA[タブ]BBB の行の下に、それぞれ、 AAA[半角スペース]DDD  と   AAA[タブ]DDD を挿入したいのですが、これをスクリプト(コマンド)でどのように行えば よいのかわからずに困っています。

みんなの回答

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

sedの場合、 sed '/^AAA[ ]BBB$/{p;s/BBB$/DDD/}' inputfile > outputfile [ ] の中は、空白とタブ。 awkの場合、 awk '{print;if (NF==2&&$1=="AAA"&&$2=="BBB"){sub(/BBB$/,"DDD");print}}' inputfile > outputfile どちらの場合も、AAAやBBBの中に正規表現の特殊文字が含まれる場合はそれぞれクォートが必要。

回答No.2

awkで追加する。 cat 入力ファイル名 | awk \ '{  if ($1=="AAA" && $2=="BBB") {   print $0   TMP0=$0;gsub($1,"",TMP0);gsub($2,"",TMP0)   print $1 TMP0 "DDD"  } }'>置き換え後ファイル名

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

sed で追加する.

yogaball
質問者

補足

ありがとうございます。 できればike-2000様のようにスクリプトを記述していただければ、実際に可能かどうかこちらも判断できますのでよろしくお願いします。

関連するQ&A