「Linux/コマンドメモ/sed」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→txt拡張子のすべてを置換して上書き保存) |
(→フォルダ内のすべてを置換して上書き保存) |
||
(同じ利用者による、間の10版が非表示) | |||
行7: | 行7: | ||
==直下のtxt拡張子のすべてを置換して上書き保存== | ==直下のtxt拡張子のすべてを置換して上書き保存== | ||
sed -i -e "s/hoge/piyo/g" *.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" | ||
==変数を置換する場合== | ==変数を置換する場合== | ||
行24: | 行28: | ||
==dir内のファイルを対象にある文字を置換== | ==dir内のファイルを対象にある文字を置換== | ||
ls schema/* | xargs sed -i "s/CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP/0/g" | 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 |
2022年8月25日 (木) 03:33時点における最新版
目次
置換して表示
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