facebook twitter hatena line email

「Linux/コマンドメモ/sed」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(sed実行後-eファイルができる問題)
(フォルダ内のすべてを置換して上書き保存)
 
(同じ利用者による、間の2版が非表示)
行9: 行9:
  
 
==フォルダ内のすべてを置換して上書き保存==
 
==フォルダ内のすべてを置換して上書き保存==
  find . -type f -name "*.txt" | xargs sed -i -e "s/hoge/piyo/g"
+
例:appフォルダ内の .txt拡張子のファイル内のhogeをpiyoへ
 +
  find ./app -type f -name "*.txt" | xargs sed -i -e "s/hoge/piyo/g"
  
 
==変数を置換する場合==
 
==変数を置換する場合==
行41: 行42:
  
 
==sed実行後-eファイルができる問題==
 
==sed実行後-eファイルができる問題==
  rm hoge.txt-eで消せば良い
+
以下で消せば良い
 +
  rm hoge.txt-e
  
 
ディレクトリ内すべての-eを消す
 
ディレクトリ内すべての-eを消す
  find . -type f -name "*.txt-e" | xargs rm
+
  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