Как использовать вывод из 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
Другие вопросы по тегам