How to construct a grep command with a variable argument in bash?

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

"..." holds its contents as one argument (even if there's whitespace).

$(...) is for "command substitution", where the stdout from running the embedded command will be put into place on the original command-line. (Another syntax, `...`, is also common but much harder to nest.)

Easier:

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

Here, you use date's ability to format the output arbitrarily.

Note that none of these match any year in the range 2006-2011, they match the literal string "2006-2011". If you want to match any one year, let us know.

Share:
12,663
WilliamKF
Author by

WilliamKF

Updated on September 18, 2022

Comments

  • WilliamKF
    WilliamKF over 1 year

    I'm trying to do something like this in bash:

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

    But that syntax is incorrect.

    The goal is to grep /some/file/here for the pattern 2006-2011 where 2011 is the current year.