Convertir des .txt pour .csv dans le shell
J'ai un fichier texte:
ifile.txt
1 4 22.0 3.3 2.3
2 2 34.1 5.4 2.3
3 2 33.0 34.0 2.3
4 12 3.0 43.0 4.4
Je voudrais le convertir en fichier csv:
ofile.txt
ID,No,A,B,C
1,4,22.0,3.3,2.3
2,2,34.1,5.4,2.3
3,2,33.0,34.0,2.3
4,12,3.0,43.0,4.4
J'ai essayé avec cela, mais ne pas obtenir le résultat.
(echo "ID,No,A,B,C" ; cat ifile.txt) | sed 's/<space>/<comma>/g' > ofile.csv
N'ifile.txt contient des onglets ou des séquences d'espaces?
Les séquences d'espaces
Les séquences d'espaces
OriginalL'auteur Kay | 2016-05-24
Vous devez vous connecter pour publier un commentaire.
awk
peut être un peu de trop ici. À mon humble avis, à l'aide detr
pour la simple substitution de ce genre est beaucoup plus simple:Je préfère commencer avec un
cat
dans la plupart des cas, il est plus facile (à mon humble avis) à lire si vous avez un seul flux d'exécution à partir de la gauche vers la droite. Si c'est pour une seule fois la conversion, la charge d'avoir à exécutercat
serait négligeable. Si cela fait partie d'un système qui exécute des douzaines de ces par seconde, vous avez probablement raison.Donc, vous dites que
awk
est exagérée, mais ensuite utilisercat
😉ouais, je suppose qu'il est plus difficile de justifier une telle déclaration 🙂
<ifile.txt tr -s ... >ofile.txt
N'est pas que de préserver l'écoulement de gauche à droite?OriginalL'auteur Mureinik
Seulement sed et rien d'autre
chat ofile.csv
OriginalL'auteur syadav
ici est le awk version
awk 'BEGIN{print "ID,No,A,B,C"}{print $1","$2","$3","$4","$5}' ifile.txt
de sortie:
OriginalL'auteur bertramlau
Essayer ..
SORTIE
OriginalL'auteur Amey Jadiye
Une possibilité, pas nécessairement le meilleur, c'est:
Insérer l'en-tête avant de la ligne 1; changer à chaque séquence d'un ou de plus d'espace, comme les personnages d'une virgule. Le saut de ligne est nécessaire traditionnels (norme POSIX — dans ce cas, BSD ou Mac OS X)
sed
; GNUsed
vous permet d'utiliser:De sortie:
Sinon, plus simplement, ont
sed
de traiter le fichier et utiliserecho
ajouter l'en-tête, comme vous l'avez fait dans les grandes lignes:Sur l'examen, c'est probablement ce que j'avais utiliser.
OriginalL'auteur Jonathan Leffler
Le faire simplement à l'aide de awk commande .
OriginalL'auteur rashedcs