WAVE Log
sed

文字列の置換をする

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