Remplacer tous les espaces blancs par des virgules dans un fichier texte


10

Je dois remplacer tous les espaces blancs à l'intérieur de mon texte par des virgules. J'utilise actuellement cette ligne mais cela ne fonctionne pas: j'obtiens en sortie un fichier texte qui est exactement le même que celui d'origine:

sed 's/[:blank:]+/,/g' orig.txt > modified.txt

Merci


sed 's / [[: blank:]] \ + /, / g'
mug896

@ mug896 a fonctionné pour moi sur Ubuntu 18.04 J'avais besoin des crochets doubles et du \ avant le +
dmontaner

Réponses:


15

Avec sed:

sed -e 's/\s\+/,/g' orig.txt > modified.txt

Ou avec perl:

perl -pne 's/\s+/,/g' < orig.txt > modified.txt

Modifier: pour exclure les sauts de ligne en perl, vous pouvez utiliser un double négatif 's/[^\S\n]+/,/g'ou une correspondance avec uniquement les caractères d'espace blanc de votre choix 's/[ \t\r\f]+/,/g'.


Merci, mais il y a toujours un problème: je ne veux pas remplacer "lignes suivantes \ n" par une virgule, et la commande avec perl le fait actuellement. Elle a ordonné que vous avez écrit, cela ne fonctionne toujours pas.
aneuryzm

Désolé, vous devez échapper à l' +opérateur de sed, je viens de mettre à jour ma réponse. Les sauts de ligne sont whitepsace en perl, vous devrez donc faire votre classe whitepsace manuellement si vous ne voulez pas l'inclure. J'ai ajouté deux solutions pour cela comme wel.
Caleb

13

En utilisant tr:

tr -s '[:blank:]' ',' <file

Cela remplacera tout espace blanc horizontal par une virgule. Tout espace répété ne sera remplacé que par une seule virgule.


-1
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 

Ici, le nom du fichier est Serveurs .. Il contient le contenu ci-dessous ..

Server1
Server2
Server3

Si nous utilisons la commande ci-dessus, nous pouvons obtenir la sortie ci-dessous.

Server1,Server2,Server3,


[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.