Como uso a saída do awk em outro comando?
Pergunta
Então preciso converter uma data para um formato diferente.Com um pipeline bash, estou pegando a data do último login do console e extraindo os bits relevantes com o awk, assim:
last $USER | grep console | head -1 | awk '{print $4, $5}'
Quais saídas: Aug 08
($ 4 = agosto $ 5 = 08, neste caso.)
Agora, quero pegar '08 de agosto' e colocá-lo em um date
comando para alterar o formato para uma data numérica.
O que seria algo assim:
date -j -f %b\ %d Aug\ 08 +%m-%d
Saídas:08-08
A pergunta que tenho é: como adiciono isso ao meu pipeline e uso as variáveis awk $4 e $5, onde '08 de agosto' está nesse comando de data?
Solução
Você só precisa usar a substituição de comando:
date ... $(last $USER | ... | awk '...') ...
Bash avaliará o comando/pipeline dentro do $(...)
e coloque o resultado lá.
Outras dicas
Pegar awk
chamar date
:
... | awk '{system("date -j -f %b\ %d \"" $4 $5 "\" +%b-%d")}'
Ou use a substituição de processo para recuperar a saída de awk
:
date -j -f %b\ %d "$(... | awk '{print $4, $5}')" +%b-%d
Suponho que você já tentou isso?
last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
Usar back ticks deve funcionar para atualizar a saída do seu longo pipeline.
date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d