27 votes

Comment convertir un texte de plusieurs lignes en une seule ligne ?

J'essaie de faire un fichier txt avec une clé générée en 1 ligne. exemple :

<----- key start ----->
lkdjasdjskdjaskdjasdkj
skdhfjlkdfjlkdsfjsdlfk
kldshfjlsdhjfksdhfksdj
jdhsfkjsdhfksdjfhskdfh
jhdfkjsdhfkjsdhfkjsdhf
<----- key stop ----->

Je veux que ça ressemble à :

lkdjasdjskdjaskdjasdkjskdhfjlkdfjlkdsfjsdlfkkldshfjlsdhjfksdhfksdjjdhsfkjsdhfksdjfhskdfhjhdfkjsdhfkjsdhfkjsdhf

Remarquez que je veux aussi les lignes <----- key start -----> y <----- key stop -----> retiré. Comment puis-je faire cela ? Est-ce que cela peut se faire avec sed ?

2voto

Daniel Haley Points 19098
grep '^[^<]' test.txt | tr -d '\n'

2voto

potong Points 18653

Cela pourrait fonctionner pour vous (GNU sed) :

sed -r '/key start/{:a;N;/key stop/!ba;s/^[^\n]*\n(.*)\n.*/\1/;s/\n//g}' file

Rassembler les lignes entre key start y key stop . Ensuite, retirez la première et la dernière ligne et supprimez les éventuelles nouvelles lignes.

1voto

freethinker Points 656
grep  -v -e "key start" -e "key stop" /PATH_TO/key | tr -d '\n'

1voto

glenn jackman Points 69748
awk '/ key (start|stop) / {next} {printf("%s", $0)} END {print ""}' filename

0voto

Milimetric Points 7539

En vim, c'est juste : %s/^M//.

Je l'utilise tout le temps pour générer des listes séparées par des virgules à partir de lignes. Pour sed ou awk, consultez les nombreuses solutions à ce lien :

http://www.unix.com/shell-programming-scripting/35107-remove-line-break.html

Exemple :

paste -s -d',' tmpfile | sed 's/,/, /g'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X