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