文字列の置換をする
test.html というファイルの euc-jp という部分を UTF-8 に変える
# sed -i 's/euc-jp/UTF-8/g' test.html
-i はファイルを編集するオプション。
-e を指定した場合は、ファイルの変更はせずに標準出力に出力するだけになる。
区切り文字は「/」以外でも可。URL の「/」のエスケープをしなくてよくなる。「!」にした例。
# sed -i 's!http://www.wave440.com!https://www.wave440.com!g' test.html
変数の場合は「'」で囲む
# sed -i 's/number/'${i}'/g' test.txt
連続するスペースを半角スペース一つにする。
# sed -e 's/\s\+/ /g' test.txt
行頭の連続するスペースを削除する。
# sed -e 's/^\s\+//g' test.txt
同じ位置にある文字に置換する。(例:全角数字→半角数字)
# echo "20210713" | sed 'y/0123456789/0123456789/'
最短マッチ(sed は最長マッチのため、否定の文字クラスを利用する。)
# sed -i 's/"visits"[^,]*,/"visits":0,/g' speed-dial-2.json
「"visits":123,」などが「"visits":0,」に置換される。「[^,]」は、「,」ではない文字。
テキストファイルの行を削除する
45行目を削除する
# sed -i '45d' file.txt
5行目から20行目までを削除する
# sed -i '5,20d' file.txt
13行目以降を削除する
# sed -i '13,$d' file.txt
「pattern」を含む行を削除する
# sed -i '/pattern/d' file.txt
空行を削除する
# sed -i '/^$/d' file.txt
テキストファイルの指定した行のみを出力する
5行目のみを出力する
# sed -n 5p file.txt
テキストファイルの行頭,行末に文字列を追加する
行頭に「"」を追加する
# sed -i 's/^/"/g' file.txt
行末に「"」を追加する
# sed -i 's/$/"/g' file.txt
文字列「AAAA」を含む行の行頭に「;」を追加する
# sed -i '/AAAA/s/^/;/g' file.txt