Não é possível redirecionar a saída do sed

4

Estou enviando saída do clock por meio do sed para remover zeros à esquerda dos números. Parece assim:

clock -sf 'S%A, %B %d. %I:%M %P' | sed 's/\b0\+\([0-9]\+\)//g'

Isso funciona bem e produz a saída que eu quero.

No entanto, quando tento redirecionar a saída para um arquivo, nada é gravado no arquivo. O seguinte NÃO funciona.

clock -sf 'S%A, %B %d. %I:%M %P' | sed 's/\b0\+\([0-9]\+\)//g' > testfile

Nada é gravado no testfile. O que estou fazendo errado?

    
por Semicolon 01.09.2014 / 21:58

1 resposta

5

Você está correndo para um problema de buffer de saída. sed normalmente armazena em buffer sua saída quando não está gravando em um terminal, então nada é gravado no arquivo até que o buffer seja preenchido (provavelmente a cada 4k bytes).

Use a opção -u para sed para desfazer a saída.

clock -sf 'S%A, %B %d. %I:%M %P' | sed -u 's/\b0\+\([0-9]\+\)//g' > testfile
    
por 01.09.2014 / 22:51