Os seguintes itens devem funcionar:
tr '\t' 0 < file 1<> file
Aqui está um arquivo de exemplo em que preciso substituir espaços em branco por zero
A 2 2 2 2 2
B 2 2 2 2 2
C 2 2 2 2 2
D A
E B
F
D
R
Os seguintes itens devem funcionar:
tr '\t' 0 < file 1<> file
Filtrar por
perl -pe 's/\t(?=\t|$)/\t0/g'
Em expressões regulares Perl,
\t
é uma tab
(?=…)
é uma asserção de antecipação de largura zero, que usei para corresponder apenas a campos vazios. As opções de linha de comando Perl
-e
especifica que o próximo argumento da linha de comando contém o programa Perl -p
insere código clichê para fazê-lo agir como awk
: executando o código Perl para cada linha na entrada e imprimindo a linha processada. Filtrar por
awk '{ while (gsub("\t\t", "\t0\t"));
sub("\t$", "\t0");
print }'
A solução é inábil porque, em geral, nem awk
nem sed
suportam asserções de antecipação de largura zero. Portanto, tenho que procurar duas guias consecutivas. Como resultado, também tenho que manipular a guia no final da linha separadamente.
Tags text-processing awk sed