2010-07-28 8 views
2

Je voudrais convertir un fichier texte contenant des mots, un espace séparé dans un fichier où chaque mot apparaît sur une ligne distinctefichier Convertir un mot par ligne

sdf sdfsd= sdfsdf 
sdfsdf 

deviendra

sdf 
    sdfsd= 
    sdfsdf 
    sdfsdf 

merci

Répondre

6

Essayez ceci:

:%s/\s\+/\r/g 

Expliqué:

:%  // whole file 
s  // substitute 
\s\+ // some number of whitespace characters 
\r // for carriage return 

Merci à @Dummy00001 l'idée +.

1

entrer la commande suivante:

:% s// \ r/g

ou quel que soit le retour chariot pour votre environnement. pour * nix, \ n pour windows.

+2

« \ r » est la bonne réponse: lors de l'adaptation, à la fin de la ligne est ' \ n ', lors de la substitution de fin de ligne est' \ r '. Indépendamment de la plate-forme. VIM gérerait le reste automatiquement. Seule amélioration je suggérerais d'ajouter '\ +' après l'espace: ':% s/\ +/\ r/g' – Dummy00001

+0

@Dummy: bon appel à propos de' + '(va ajouter ça à ma réponse). – Stephen

+0

@Dummy rad, ne savait pas que \ r et \ n étaient indépendants de la plate-forme. Merci! – coffeepac

1

Ceci est aussi facile d'écrire un script shell, vous n'avez pas besoin sed ou awk:

bash$ for word in $(cat input.txt); do echo "$word" >> output.txt; done 
1
$ tr " " "\n"<file|sed -n '/^$/!p' 
sdf 
sdfsd= 
sdfsdf 
sdfsdf 
Questions connexes