Как создать команду grep с переменным аргументом в bash?

Как создать команду grep с переменным аргументом в bash?

Я пытаюсь сделать что-то вроде этого в 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

Здесь вы используете возможность date произвольно форматировать вывод.

Обратите внимание, что ни один из них не соответствует ни одному году в диапазоне 2006-2011, они соответствуют буквальной строке "2006-2011". Если вы хотите сопоставить любой год, дайте нам знать.

Связанный контент