Je voudrais remplacer l'espace vide entre chaque champ par un séparateur de virgule. Quelqu'un pourrait-il me faire savoir comment puis-je faire cela? J'ai essayé la commande ci-dessous, mais cela ne fonctionne pas. Merci.
My command:
:%s//,/
53 51097 310780 1
56 260 1925 1
68 51282 278770 1
77 46903 281485 1
82 475 2600 1
84 433 3395 1
96 212 1545 1
163 373819 1006375 1
204 36917 117195 1
Si vous parlez de sed
, cela fonctionne:
sed -e "s/ /,/g" < a.txt
Dans vim
, utilisez la même expression régulière pour remplacer:
s/ /,/g
Dans vim
, vous souhaitez taper en mode normal (commande):
:%s/ /,/g
Sur l'invite du terminal, vous pouvez utiliser sed
pour effectuer ceci sur un fichier:
sed -i 's/\ /,/g' input_file
Remarque: l'option -i
de sed
signifie "édition sur place", car elle modifiera le fichier d'entrée.
Je sais que ce n'est pas exactement ce que vous demandez, mais pour remplacer une virgule par une nouvelle ligne, cela fonctionne très bien
tr , '\n' < file
Si vous voulez la sortie sur le terminal alors,
$sed 's/ /,/g' filename.txt
Mais si vous souhaitez modifier le fichier lui-même i.e. si vous souhaitez remplacer l’espace par la virgule dans le fichier,
$sed -i 's/ /,/g' filename.txt
Essayez la commande suivante et cela devrait marcher pour vous.
sed "s/\s/,/g" orignalFive.csv > editedFinal.csv
SI vos données incluent une séquence arbitraire de caractères vides (tabulation, espace) et que vous souhaitez remplacer chaque séquence par une virgule, utilisez les éléments suivants:
sed 's/[\t ]+/,/g' input_file
ou
sed -r 's/[[:blank:]]+/,/g' input_file
Si vous souhaitez remplacer une séquence de caractères d'espace, qui inclut d'autres caractères tels que le retour chariot et le retour arrière, etc., utilisez ce qui suit:
sed -r 's/[[:space:]]+/,/g' input_file