sedコマンドのスラッシュ(/)エスケープ、変数展開、ファイルの上書きなど

URLのスラッシュのスケープは何気に面倒だったりするのでそのメモ。

test.txt - テスト用入力ファイル
http://www.yahoo.co.jp
ENV=LANG

区切り文字(デリミタ)の変更

s///置換の区切り文字は何でもよくってsに続く1文字で指定可能。!や@なんかもOK
#!/bin/sh

echo "*** separate=!"
sed s!http://www.yahoo.co.jp!http://www.google.com!g test.txt

echo "*** separate=@"
sed s@http://www.yahoo.co.jp@http://www.google.com@g test.txt

実行結果
*** separate=!
http://www.google.com
ENV=LANG

*** separate=@
http://www.google.com
ENV=LANG


変数の展開・エスケープ

'(シングルクオート)で囲むことによって対応可能。
#!/bin/sh

LANG=envlang

echo "*** 変数の展開"
sed s/LANG/$LANG/g test.txt

echo "*** 変数のエスケープ"
sed s/LANG/'$LANG'/g test.txt

実行結果
*** 変数の展開
http://www.google.com
ENV=envlang

*** 変数のエスケープ
http://www.google.com
ENV=$LANG


入力ファイルへの上書き

-iオプションを付けるだけ。
#!/bin/sh

echo "*** separate=@ and 入力ファイルを上書き"
sed -i s@http://www.yahoo.co.jp@http://www.google.com@g test.txt
cat test.txt

実行結果
*** separate=@ and 入力ファイルを上書き
http://www.google.com
ENV=LANG


カテゴリ

Amazon

アクセスランキング

[ジャンルランキング]
コンピュータ
261位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
47位
アクセスランキングを見る>>

RSSリンクの表示

ブロとも申請フォーム

Copyright © nopgm