Suponha que temos um arquivo de texto chamado distribuições.txt com o seguinte:
archlinux
debian
ubuntu
kaos
fedora
slackware
gentoo
E queremos transformá-lo em:
archlinux debian ubuntu kaos fedora slackware gentoo
Para conseguir isso, usaremos um para loop e um eco -n :
for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""
Feito, isso resolve 🙂
Isso nos mostrará o resultado desejado no terminal, se por outro lado queremos que seja salvo em outro arquivo .txt redirecionamos a saída:
for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt
E voila 🙂
Bem, nada, espero que seja útil. Válido para esclarecer que também pode ser feito com expressões regulares, só não sei como ... mas, com expressões regulares você pode fazer quase tudo hahaha.
15 comentários, deixe o seu
mais fácil:
cat distribuições.txt | xargs -n 100
Se em um .odt eu tiver 2 colunas em cada página, elas serão assim:
p. 1
col.1 col.2
p. 2
col.3 col.4
etc.
Como faço para colocar cada coluna abaixo da outra?
col.1
col.2
col.3
col.4
etc.
Muito facil:
Se você quiser separar por tabulações:
Você escreve: paste -s distros.txt
Você obtém: archlinux debian ubuntu kaos fedora slackware gentoo
Se você quiser separado por espaços:
Você escreve: paste -s -d »» distros.txt
Você obtém: archlinux debian ubuntu kaos fedora slackware gentoo
Se você quiser separá-lo por vírgulas:
Você escreve: paste -s -d, distros.txt
Você obtém: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo
Com paste, cat, awk e outros amigos, com um pouco de engenhosidade você pode fazer muitas combinações úteis sem complicar sua vida.
Que continue tudo bem, parabéns pela premiação no Portalprogramas!
Tenho usado sed, awk, cut, sort, uniq, enfim o cream, mas nunca prestei atenção em colar, obrigado por mostrar o que ela pode fazer. Slds.
cat arquivo.txt | xargs
lucro.
Eu sempre acabo usando o excel para isso [transpor] ... muito útil
Outra variante:
cat distros.txt | tr «\ n» »«
HaHaHa em cada comentário, uma forma diferente de fazer o mesmo!
E para fazer o contrário, como seria? Ou seja, converter uma linha de palavras separadas por espaços em uma coluna.
Fácil também, desta vez com awk.
Supondo que os campos estejam separados por tabulações ou espaços, que é o mais comum (se for por vírgulas ou outra coisa, deve ser levado em consideração e indicado), e que o arquivo agora contém: archlinux debian ubuntu kaos fedora slackware gentoo
Como o awk nos fornece diretamente o campo que queremos, temos que fazer com que ele nos mostre iterativamente um por um até o final. São 7 campos porque este é o valor da NF (Número de campos). Ajustamos o contador i = 1, para que ele nos mostre o primeiro campo ($ 1) e temos que fazer com que ele aumente em uma unidade (usando i ++) sem exceder o último campo (NF).
awk '{for (i = 1; i <= NF; i ++) {print $ i}}' distros.txt
A forma mais prática, fácil de lembrar e que funciona para os dois sentidos é esta:
cat distros.txt | tr '\ n' '' ← Saída horizontal stdout (já discutido acima)
cat distros.txt | tr '' '\ n' ← Saída vertical stdout
Saudações!
Definitivamente, a solução de Etemenanki, nos dois sentidos, é boa se você estiver interessado apenas em uma simples transformação de linha para coluna e vice-versa.
Obrigado a todos por responder. Vou colocá-los em prática no próximo script que fizer.
Saudações.
E se você apenas fizer:
echo $ (cat distros.txt)
Ainda mais fácil:
awk '{printf $ 0 ″ «}' distros.txt