2010年3月17日水曜日

edコマンド

sedコマンドでhogehogeファイルの1行目の文字列「foo」を「bar」に置き換える場合

sed "1s/foo/bar/g" hogehoge

ってな感じになる。

そこでこれを同じファイルに保存するために

sed "1s/foo/bar/g" hogehoge > hogehoge

とするとhogehogeは空のファイルになってしまう。

こんな場合、edコマンドを使えば、こんな感じでできる。

echo -e "1s/foo/bar/g\nw\nq\n" | ed -s nkt_scripts/test.sh

echoの「-e」オプションは「\」をエスケープ文字と見なすためのもの。
これで「\n」を改行とみなしてくれる。

echoでは置き換え命令「1s/foo/bar/g」と
書き込み命令「w」と
終了命令「q」をedに送っている。
改行「\n」が命令の区切り。

edの「-s」オプションは、edの出力を消すため。
シェルスクリプト内で使いたいので、意味のない出力を出さないためにつけとく。

0 件のコメント: