Question
est-il facile de combiner des champs dans awk? Plus précisément, j'ai des lignes comme celle-ci:
1,2,some text
3,4,some text, but it has commas in it, annoyingly
Je veux extraire les deux nombres en tant que les deux premiers champs, mais je souhaite ensuite que tout le texte (virgules et tout) soit le troisième champ. Y a-t-il un moyen de le faire?
Mon appel awk de base ressemblait à ceci:
awk -F\, '{print $1"|"$2"|"$3}' file.txt
Ce qui fonctionne bien pour la première ligne, mais s'arrête à la virgule dans le texte de la deuxième ligne.
La solution
Peut-être:
awk '{for (i=0;i<2;i++) sub(",", "|", <*>); print}' file.txt
Autres conseils
Vous pouvez utiliser sed pour le faire.
cat file.txt | sed 's/\(.?*\),\(.?*\),/\1|\2|/'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow