Algumas escolhas:
-
O clássico, use
tr:tr ' ' '\n' < example -
Use
cutcut -d ' ' --output-delimiter=$'\n' -f 1- example -
Use
sedsed 's/ /\n/g' example -
Use
perlperl -pe 's/ /\n/g' example -
Use o shell
foo=$(cat example); echo -e ${foo// /\n}
Eu tenho um arquivo de texto simples chamado "exemplo".
Lendo com o comando do terminal: cat example
Saída:
abc cdef ghi jk lmnopq rst uv wxyz
Eu quero converter (transformar) no seguinte formato: (saída esperada de cat example )
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
Como posso fazer isso via linha de comando?
(Este é apenas um arquivo de exemplo, quero converter a posição da palavra na coluna vertical)
Algumas escolhas:
O clássico, use tr :
tr ' ' '\n' < example
Use cut
cut -d ' ' --output-delimiter=$'\n' -f 1- example
Use sed
sed 's/ /\n/g' example
Use perl
perl -pe 's/ /\n/g' example
Use o shell
foo=$(cat example); echo -e ${foo// /\n}
Experimente o comando abaixo
awk -v RS=" " '{print}' file
OR
awk -v RS='[\n ]' '{print}' file
Exemplo:
$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
Explicação:
RS (Recorder Separador) é uma variável interna do awk. No primeiro comando, o valor dado à variável do separador Record é o espaço. Então awk quebra a linha de impressão sempre que encontrar um espaço.
No segundo comando, o valor dado à variável RS é espaço ou um novo caractere de linha. Esse comando elimina a linha em branco extra que aparece durante a execução do primeiro comando.
Você pode usar xargs ,
cat example | xargs -n 1
ou melhor
xargs -n 1 < example
Usando um perl oneliner:
perl -p -i -e 's/\s/\n/g' example
Ele substituirá espaços e tabulações por "ENTER" (também conhecido como \n )
Ninguém postou python, então aqui está:
python -c "import sys;lines=['\n'.join(l.strip().split()) for l in sys.stdin.readlines()];print('\n'.join(lines))" < input.txt
Nós redirecionamos o arquivo de entrada para o fluxo de stdin de python e o lemos linha por linha. Cada linha é despojada de sua nova linha, dividida em palavras e depois reunida em uma string onde cada palavra é separada por nova linha. Isso é feito para garantir uma palavra por linha e evitar que novas linhas sejam inseridas no caso de haver vários espaços ao lado entre si. Eventualmente acabamos com uma lista de strings, que é então novamente unida em uma string maior, e impressa em stdout stream. Posteriormente, isso pode ser redirecionado para outro arquivo com o redirecionamento > out.txt .