facebook twitter hatena line email

Linux/コマンドメモ/sed

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

置換して表示

sed -e "s/hoge/piyo/g" test.txt 

置換して上書き保存

sed -i -e "s/hoge/piyo/g" test.txt

直下のtxt拡張子のすべてを置換して上書き保存

sed -i -e "s/hoge/piyo/g" *.txt

フォルダ内のすべてを置換して上書き保存

例:appフォルダ内の .txt拡張子のファイル内のhogeをpiyoへ

find ./app -type f -name "*.txt" | xargs sed -i -e "s/hoge/piyo/g"

変数を置換する場合

TEST="hoge"
TEST=`echo $TEST| sed "s/hoge/piyo/g"`

正規表現

sed -i -e "s/<string name=¥"app_flag¥">¥(true¥|false¥)/<string name=¥"app_name¥">true/g" strings.xml

区切り文字

以下区切り文字が使える

/
|
%
:

dir内のファイルを対象にある文字を置換

ls schema/* | xargs sed -i "s/CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP/0/g"

grep内のファイルを対象にある文字を置換

grep hoge ./ -r -l | xargs sed -i -e "s/hoge/piyo/g"

一致する文字を削除

sed -i -e /E36A38/d /d/www/hogehoge/hoge.xml

一致する文字を正規表現で削除

sed -i -e "/[A-Z0-9]\{32\}/d" /d/www/hogehoge/hoge.xml

hoge.xml

<item>1234567890123456789ab</item>

sed実行後-eファイルができる問題

以下で消せば良い

rm hoge.txt-e

ディレクトリ内すべての-eを消す

find . -type f -name "*.txt-e" | xargs rm