2016-05-16 10 views
1

私はsedの日付の値をsedにパイプする方法は?

cat template.html | sed s/\\@\\@DATENUMBER\\@\\@/date +"%Y%m%d"/g 

で置換語としてパイプさ

date + "%Y%m%d" 

の価値を持っていると思います。しかし、これは許可されていません。日付の値を抽出して正しくパイプするにはどうすればよいですか?

答えて

3

試してみてください。

sed "s/@@[email protected]@/$(date +"%Y%m%d")/g" template.html 

注:

  1. sedは、引数としてファイル名を取りますのでcatための必要はありません。

  2. あなたは@@[email protected]@のようなルックスを交換したいテキストは、それらすべてのバックスラッシュの必要がない場合:@は、シェル・アクティブ文字やsedのアクティブな文字でもないし、エスケープする必要はありません。

  3. dateコマンドを実行する場合は、コマンド置換($(...))を使用する必要があります。

  4. sed sコマンドの全体は、シェルが単語分割を行わないように引用符で囲む必要があります。

+0

ありがとうございます!この文脈で「単語分割」とは何を意味しますか? – byInduction

+0

ようこそ。元のコマンドの場合、 'sed'は完全な置換コマンドを表示しません。代わりに 's/\\ @ \\ @ DATENUMBER \\ @ \\ @/date'を第1引数として、'%1%m%d "/ g'を第2引数として見ます。スペースを含むものがあり、そのコマンドに単一の引数として見たい場合はいつでも引用符で囲む必要があります。 – John1024

+0

単語分割の詳細については、たとえば[この回答](http://stackoverflow.com/a/18498494/3030305)を参照してください。高度な議論については、[このFAQ](http://mywiki.wooledge.org/WordSplitting)を参照してください。 – John1024

関連する問題