プロが教えるわが家の防犯対策術!

質問です。例えば/home/testディレクトリ配下にある前ファイルを対象に
下記複行置換をすることは可能でしょうか?



define test{
test_name test111
test_kind testdinamic1 #可変
test_description test333
test_etc test444
}



define test{
test_name test101010
test_kind testdinamic2 #可変
test_description test303030
test_etc test444
}


色々調べたのですがsedコマンドでは限界を感じ、
何かいい方法が無いかなぁと考えています。

以上、宜しくお願いします。

A 回答 (1件)

置換パターンの複数指定は、sed の `-e' オプションを重ねることで実現できます。



sed \
-e 's/test111/test1010/' \
-e 's/testdinamic1/testdinamic2/' \
-e 's/test333/test303030/'

あるディレクトリ配下の全ファイルを個別に処理する場合は、for 文を使うことになります。

for fname in `ls /home/test`
do
 # ファイルごとの処理を記述する
done

個別の処理でなければ、for 文を使わずワイルドカード指定をするだけです。
また、内容を置換し上書きしたい場合は、sed の `-i' オプションを利用します。

sed -i -e 's/xxx/XXX/' a.txt

これらを組み合わせることでできないでしょうか?

(例)
for fname in `ls /home/test`
do
 # ファイルごとの置換処理
 sed -i \
 -e 's/test111/test1010/' \
 -e 's/testdinamic1/testdinamic2/' \
 -e 's/test333/test303030/' $fname
done
    • good
    • 0
この回答へのお礼

有難うございました

お礼日時:2011/04/13 12:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!