如何在 bash 中构造带有变量参数的 grep 命令?

如何在 bash 中构造带有变量参数的 grep 命令?

我正在尝试在 bash 中做这样的事情:

grep ( date | awk '{print "2006-" $6}' ) /some/file/here

但该语法不正确。

目标是 grep /some/file/here 以找到模式 2006-2011,其中 2011 是当前年份。

答案1

grep "$(date | awk '{print "2006-" $6}')" /some/file/here

"..."将其内容作为一个参数保存(即使有空格)。

$(...)代表“命令替换”,其中运行嵌入命令的标准输出将放在原始命令行上。(另一种语法`...`也很常见,但嵌套起来要困难得多。)

更轻松:

grep "$(date +'2006-%Y')" /some/file/here

在这里,您可以使用日期的功能任意格式化输出。

请注意,这些都不匹配 2006-2011 范围内的任何年份,它们匹配文字字符串“2006-2011”。如果您想匹配任何一年,请告诉我们。

相关内容