facebook twitter hatena line email

「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