如何在 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」。如果您想匹配任何一年,請告訴我們。

相關內容