#author("2020-03-10T21:49:28+00:00","default:wikiadmin","wikiadmin") #author("2021-02-04T10:56:17+00:00","default:wikiadmin","wikiadmin") 置換えなどに効果を発揮するsedコマンドまとめ *応用テクニック [#f930159c] -バックアップを取りつつ元のファイルを置換 sed -i.bak -e 's/置換前/置換後/g' 対象ファイル名 -/が含まれる文字列を置換したいなら以下のように別の文字を/の代わりに使えばOK sed -i.bak -e 's#置換前#置換後#g' 対象ファイル名 -複数の置換パターン sed -e '/置換前1/置換後1/g' -e '/置換前1/置換後2/g' 対象ファイル名 -sedファイルを外部から読み込んで実施 sed -f スクリプト.sed 入力.txt > 出力.txt -ファイルの中身はこんな感じでパターンを複数並べる s#url: https://www.example.com/#url: hoge#g -改行コードを置き換えない(つけないとCRLFがLFにされてしまう) sed -b -行の先頭に文字を加える sed s/^/ADD/g 対象ファイル名 -行末に文字を加える。 sed s/$/\!/g 対象ファイル名 -特定の文字を含む行を除外(含む行のみにしたいなら!sをsにする) '/特定の文字/!s/置換前キーワード/置換後キーワード/g' -特定の文字を含む行を除外(複数パターン) '/\(特定の文字1\|特定の文字2\)/!s/置換前キーワード/置換後キーワード/g' -特定行の後に挿入 *find結果を渡して処理する [#eee5ea40] find . -name "*.html" | xargs grep -l "対象キーワード" | xargs sed -e "s/hoge/fuga/g" *ファイルリストを渡して処理する。 [#h17d3459] cat filelist.txt | xargs sed -e 's/hoge/fuga/g' *Podcast Addictの管理番号除去 [#n63f97c5] echo "23_EC433.mp3" | sed -e 's/[0-9]._//g' *MACのSED [#g790d0aa] OSでの差分があるのは書き換えの-i.bkオプションのところをMACだと-i '.bk'とする必要がある。また直接書き換えだと-i ''とする必要がある