「Linux/コマンドメモ/sed」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→置換して上書き保存) |
(→置換して上書き保存) |
||
| (同じ利用者による、間の12版が非表示) | |||
| 行5: | 行5: | ||
sed -i -e "s/hoge/piyo/g" test.txt | sed -i -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 | 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: | 行31: | ||
==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 | ||
2026年4月11日 (土) 13:39時点における最新版
目次
置換して表示
sed -e "s/hoge/piyo/g" test.txt
置換して上書き保存
sed -i -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
