
私はbashで次のようなことをやろうとしています:
grep ( date | awk '{print "2006-" $6}' ) /some/file/here
しかし、その構文は間違っています。
目標は、/some/file/here でパターン 2006-2011 (2011 は現在の年) を grep 検索することです。
答え1
grep "$(date | awk '{print "2006-" $6}')" /some/file/here
"..."
内容を 1 つの引数として保持します (空白があっても)。
$(...)
は「コマンド置換」用で、埋め込まれたコマンドの実行からの stdout が元のコマンドラインに配置されます。(別の構文`...`
も一般的ですが、ネストするのがはるかに困難です。)
より簡単に:
grep "$(date +'2006-%Y')" /some/file/here
ここでは、出力を任意にフォーマットする date の機能を使用します。
これらはいずれも 2006 ~ 2011 の範囲内のどの年とも一致せず、リテラル文字列 "2006 ~ 2011" に一致することに注意してください。 いずれかの年に一致させたい場合は、お知らせください。