2010-11-23 10 views
3

bashを使用して、日付の変数を挿入し、その日付のログファイルを検索してから、出力をファイルに送信しようとしています。変数を使用しているときにsedコマンドが失敗するのはなぜですか?

sed -n '/Nov 22, 2010/,$p' $file >$log_file 

をしかし、私はこのようにそれを行う場合、それは失敗します:私はこのような日付をハードコーディングした場合、それは動作します私が手

date="Nov 22, 2010" 
sed -n '/$date/,$p' $file >$log_file 

エラーは次のとおりです。助けをsed: 1: "/Nov 22, 2010/,": expected context address 感謝を。

+0

http://backreference.org/2009/12/09/using-shell-variables-in-sed/ – birryree

答えて

7

シェルスクリプトでは、一重引用符と二重引用符に違いがあります。あなたが必要となるので、単一引用符内の変数はない、(二重引用符のものとは違って)展開されます。

date="Nov 22, 2010" 
sed -n "/$date/,\$p" $file >$log_file 

バックスラッシュは、シェルによって文字通りに解釈されなければならないドル記号をエスケープし、sedのための意味を持っています。

+0

ええ、それからpの前にエスケープする必要があります:\ $ p –

+0

@jcomeau_ictx : – PleaseStand

+0

の後にあなたのコメントを見ていたことを修正しました。ありがとうございました.... "\"は私が必要としていたものでした。よく働く! – Ronedog

関連する問題