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