#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 ''とする必要がある

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS