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.

Était-ce utile?

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
scroll top