it-swarm-pt.tech

Remova as linhas vazias dos arquivos de texto, remova os espaços do início e do final da linha

Qual seria o melhor:

sed -e '/^$/d' *.txt
sed 'g/^$/d' -i *.txt

Além disso, como removo os espaços do início e do fim de cada linha no arquivo de texto?

21
alvas
$ sed 's/^ *//; s/ *$//; /^$/d' file.txt

`s/^ *//`  => left trim
`s/ *$//`  => right trim
`/^$/d`    => remove empty line
38
kev

Método ainda mais simples usando awk.

cat filename.txt | awk 'NF' | awk '{$1=$1;print}'

awk 'NF' - Isso removerá todas as linhas em branco/vazias.

awk '{$1=$1;print}' - Isso removerá apenas os espaços em branco à direita (esquerda e direita)

5
M.S.Arun

Isso pode funcionar para você:

sed -r 's/^\s*(.*\S)*\s*$/\1/;/^$/d' file.txt
4
potong

Semelhante, mas usando o editor ex:

ex -s +"g/^$/de" +"%s/^\s\+//e" +"%s/\s\+$//e" -cwq foo.txt

Para vários arquivos:

ex -s +'bufdo!g/^$/de' +'bufdo!%s/^\s\+//e' +'bufdo!%s/\s\+$//e' -cxa *.txt

Para substituir recursivamente, você pode usar ma nova opção globbing (por exemplo, **/*.txt).

2
kenorb