Я пытаюсь сделать что-то подобное в bash:

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

Но этот синтаксис неверен.

Цель состоит в том, чтобы найти grep /some /file / здесь для шаблона 2006-2011, где 2011 - текущий год.

1 ответ1

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

"..." хранит свое содержимое как один аргумент (даже если есть пробел).

$(...) для "подстановки команд", когда вывод исходной команды будет введен в исходную командную строку. (Другой синтаксис, `...` , также распространен, но гораздо сложнее вложить.)

Полегче:

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .