Substituir qualquer número de abas e espaços por uma única nova linha no Linux? [fechadas]

6

Eu tenho uma lista de palavras muito grande que foi danificada, talvez por saída incorreta de vim ou exaustão de memória?

Tudo na minha lista de palavras deve ser justificado à esquerda. Mas agora é assim:

Cat                           Dog
Soup                          Rat
Cass                          Audrey

Eu posso fazer um simples tr -d " " para transformar isso em:

CatDog
SoupRat
CassAudrey

Mas isso não é o que eu quero. Eu quero as palavras certas justificadas em sua própria nova linha como esta:

Cat
Dog
Soup
Rat
Cass
Audrey

Eu não sei que tipo de espaço em branco separa as palavras justificadas à esquerda e à direita. Como me livrar de todos esses espaços enquanto preservo as palavras da mão direita usando tr, sed ou awk?

(As listas acima que eu digitei não parecem com o que quero dizer, espero que a pergunta seja auto-explicativa).

EDITAR:

Desculpe ... acho que essa foi uma pergunta meio idiota, na verdade! Eu acho que eu vejo o que estava acontecendo ... Eu estava usando o gato para passar pela longa lista de palavras. Cat trabalha muito mais rápido do que a nova informação poderia ser armazenada na tela. Então, parecia que algumas palavras estavam aparecendo justificadas à direita. Eu passei pelo mesmo arquivo mais lentamente com o vim e não havia palavras justificadas pelo direito. Tola, obrigada pelas respostas!

    
por user2925489 14.11.2017 / 07:28

5 respostas

12

o etopylight estava quase certo:

tr -s ' \t' '\n'

porque a pergunta também é necessária para substituir as guias.

    
por 14.11.2017 / 08:05
10

Basicamente, você poderia fazer isso no GNU sed :

sed 's/\s\+/\n/g'

Lá vai você ...

    
por 14.11.2017 / 07:44
6

Você deve poder usar

sed -e 's/[[:space:]]\{1,\}/\n/'

para substituir qualquer seqüência de um ou mais caracteres de espaço em branco (incluindo esquisitices como guias de alimentação e vertical) com uma única nova linha.

    
por 14.11.2017 / 07:36
2

Você pode usar a opção -s de tr para espremer caracteres repetidos em um e substituí-lo em uma nova linha

tr -s " " "\n"
    
por 14.11.2017 / 07:36
2

Se o gnu-grep estiver disponível,

grep -Po '\S+'
    
por 14.11.2017 / 15:41