bash で可変引数を使用して grep コマンドを構築するにはどうすればよいでしょうか?

bash で可変引数を使用して grep コマンドを構築するにはどうすればよいでしょうか?

私は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" に一致することに注意してください。 いずれかの年に一致させたい場合は、お知らせください。

関連情報