Analisando a saída de data com sed

1

Estou tentando substituir os espaços em branco na saída de data por '_' sem sucesso.

$date
Fri Sep 14 14:10:04 EDT 2012

$ date | sed 's/ /_/'
Fri_Sep 14 14:10:24 EDT 2012

Como você pode ver, o último comando substituiu apenas o primeiro espaço em branco por _ '. Por que pular os outros espaços em branco?

    
por Amelio Vazquez-Reina 14.09.2012 / 20:12

2 respostas

8

Tente:

$ date | tr ' ' '_'

ou

$ date | sed 's/ /_/g'

Seu comando substituiu apenas a primeira instância correspondente da entrada de data porque esse é o comportamento padrão de sed . Adicionando a opção g (substituição global) ao final do comando, sed em vez disso irá combinar e substituir todas as ocorrências da expressão.

    
por 14.09.2012 / 20:14
6

Apenas meus 2 centavos. Se você quiser uma data como uma única palavra, um bom formato é o padrão ISO 8601 2012-09-14T21: 08: 12 É conciso, não ambíguo e sua ordem cronológica é a mesma que sua ordem alfabética.

date +%Y-%m-%dT%T

que em alguns sistemas você pode até escrever como

date +%FT%T

Tenha em atenção que nos fusos horários que implementam DSTs, isso ainda é ambíguo. Adicionar %z elimina a ambigüidade, mas não ajuda na classificação. Outra opção é exibir a hora UTC (com -u ) ou a hora da época Unix ( %s é algumas implementações) que é independente dos fusos horários.

    
por 14.09.2012 / 22:17

Tags