Так что мне нужно конвертировать дату в другой формат. В bash-конвейере я беру дату с последнего входа в консоль и извлекаю соответствующие биты с помощью awk, вот так:
last $USER | grep console | head -1 | awk '{print $4, $5}'
Который выводит: Авг 08
($ 4 = авг $ 5 = 08, в данном случае.)
Теперь я хочу взять '08 августа' и поместить его в команду date
, чтобы изменить формат на числовую дату.
Что бы выглядело примерно так:
date -j -f %b\ %d Aug\ 08 +%m-%d
Выходы: 08-08
У меня вопрос: как мне добавить это к моему конвейеру и использовать переменные awk $ 4 и $ 5, где '08.08' находится в эту дату команда?
Вам просто нужно использовать подстановку команд:
date ... $(last $USER | ... | awk '...') ...
Bash оценит команду / конвейер внутри $ (...)
и поместит туда результат.
Полагаю, вы уже пробовали это?
last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
Использование обратных тиков должно сработать для актуализации вывода вашего длинного конвейера.
date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d
Заставьте awk
вызвать date
:
... | awk '{system("date -j -f %b\ %d \"" $4 $5 "\" +%b-%d")}'
Или используйте подстановку процесса для получения вывода из awk
:
date -j -f %b\ %d "$(... | awk '{print $4, $5}')" +%b-%d