sedコマンドのスラッシュ(/)エスケープ、変数展開、ファイルの上書きなど
- Mon
- 00:50
- シェルスクリプト
URLのスラッシュのスケープは何気に面倒だったりするのでそのメモ。
test.txt - テスト用入力ファイル
実行結果
実行結果
実行結果
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
- 関連記事
-
- lftpコマンドによるFTPSサーバへのアクセス
- シェルスクリプトIF文、数値・文字列比較、ファイル・ディレクトリ存在判定
- sedコマンドのスラッシュ(/)エスケープ、変数展開、ファイルの上書きなど
- sedによるファイル内文字列の一括置換
- diffコマンドとpatch(パッチ)の適応
Comment
Trackback
- URL
- https://nosource.blog.fc2.com/tb.php/110-08e2c9d6
- この記事にトラックバック(FC2Blog User)