110 votes

Transformer une chaîne de plusieurs lignes en une seule séparée par des virgules

Disons que j'ai la chaîne suivante :

 something1:    +12.0   (some unnecessary trailing data (this must go))
something2:    +15.5   (some more unnecessary trailing data)
something4:    +9.0   (some other unnecessary data)
something1:    +13.5  (blah blah blah)

Comment puis-je transformer cela en simplement

 +12.0,+15.5,+9.0,+13.5

en bas?

195voto

Mattias Ahnberg Points 691

Propre et simple :

 awk '{print $2}' file.txt | paste -s -d, -

25voto

cat data.txt | xargs | sed -e 's/ /, /g'

11voto

kev Points 41855
$ awk -v ORS=, '{print $2}' data.txt | sed 's/,$//'
+12.0,+15.5,+9.0,+13.5
 $ cat data.txt | tr -s ' ' | cut -d ' ' -f 2 | tr '\n' ',' | sed 's/,$//'
+12.0,+15.5,+9.0,+13.5

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