
Я пытаюсь сделать что-то вроде этого в 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". Если вы хотите сопоставить любой год, дайте нам знать.