tr é bom para este trabalho:
tr -d 0 <file
[:0:] é inválido porque você precisa usar uma classe de caracteres entre [: e :] .
Eu tenho um arquivo:
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
Eu quero excluir todos os zeros:
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8
Eu tentei tr -d [:0:] . Infelizmente, não é para funcionar desta forma.
Acredito que sed e perl fariam o trabalho, mas não sei exatamente como.
Eu pesquisei no google, se você acredita em mim, os resultados são mistos e relevantes, mas não consigo encontrar o caminho certo na primeira página.
tr é bom para este trabalho:
tr -d 0 <file
[:0:] é inválido porque você precisa usar uma classe de caracteres entre [: e :] .
[8]root@lab711:> cat file
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
[8]root@lab711:> sed 's/0//g' file
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8
Para remover todos os zeros no arquivo, o comando a usar é sed 's/0//g' filename o s significa substituto. O /0 representa todos os 0s no arquivo. o // significa substituir por nada. O g significa globalmente
Tente
perl -pe 's/\s+0\b//g' <filename>
-p faz um loop na linha de arquivos e imprime $_ -e executar /g Global (todas as ocorrências) s/\s+0\b// está excluindo a série de pelo menos um espaço, seguida pelo caractere 0 , seguido pelo final da palavra. Ou, em substituição de lugar no arquivo,
sed -ibbak -e 's/\s\+0\b//g' <filename>
-i no lugar -b.bak faz backup (a extensão é .bac ) + deve ter escape. \s na regex é um espaço \b na regex é o fim da palavra Espera que dê um pontapé inicial!