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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top