Как это сделать? Я использую вывод из awk в другой команде?

Так что мне нужно конвертировать дату в другой формат. В 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' находится в эту дату команда?

9
задан 10 August 2010 в 19:12
поделиться

4 ответа

Вам просто нужно использовать подстановку команд:

date ... $(last $USER | ... | awk '...') ...

Bash оценит команду / конвейер внутри $ (...) и поместит туда результат.

8
ответ дан 4 December 2019 в 19:32
поделиться

Полагаю, вы уже пробовали это?

last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
0
ответ дан 4 December 2019 в 19:32
поделиться

Использование обратных тиков должно сработать для актуализации вывода вашего длинного конвейера.

date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d
0
ответ дан 4 December 2019 в 19:32
поделиться

Заставьте 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
4
ответ дан 4 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: