Как использовать вывод из awk в другой команде? - PullRequest
9 голосов
/ 10 августа 2010

Так что мне нужно конвертировать дату в другой формат. В bash-конвейере я беру дату с последнего входа в консоль и извлекаю соответствующие биты с помощью awk, вот так:

last $USER | grep console | head -1 | awk '{print $4, $5}'

Какие выходы: Aug 08 (В данном случае 4 доллара = 5 августа = 5 долларов).

Теперь я хочу взять '08 августа' и поместить его в команду date, чтобы изменить формат на числовую дату.

Что бы выглядеть примерно так:

date -j -f %b\ %d Aug\ 08 +%m-%d

Выходы: 08-08

У меня вопрос: как мне добавить это к моему конвейеру и использовать переменные awk $ 4 и $ 5, где в этой дате указана '08 августа'?

Ответы [ 4 ]

8 голосов
/ 10 августа 2010

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

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

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

4 голосов
/ 10 августа 2010

Получите 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
0 голосов
/ 10 августа 2010

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

date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d
0 голосов
/ 10 августа 2010

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

last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...