Compter le nombre de colonne dans un tuyau d'un fichier délimité

J'ai un tuyau | fichier délimité.

Fichier:

106232145|"medicare"|"medicare,medicaid"|789

Je voudrais compter le nombre de champs de chaque ligne. J'ai essayé le code ci-dessous

Code:

awk -F '|' '{print NF-1}'

Cela me renvoie le résultat sous la forme de 5 au lieu de 4. C'est parce que le awk prend "medicare|medicaid" comme deux domaines différents au lieu d'un champ

  • La seule façon que je peux penser à ce que vous avez 5 au lieu de 4 avec cette commande si vous avez réellement fait awk -F\" ... (ou à la place de la double citation, l'un des autres personnages qui se produit 4 fois dans la chaîne, comme d ou i...). En fait, avec NF-1, vous devriez avoir obtenu 3 à la place...
  • Mais ton exemple ne contiennent pas de "medicare|medicaid" ??
  • Si vous avez des données que peut contenir le délimiteur dans la cité des valeurs de champ, alors vous avez besoin d'un spécialisé CSV style de l'analyseur. Les chances sont csvfix pouvez faire ce que vous avez besoin. Voir aussi Linux outil pour analyser les fichiers CSV. Il y a des modules Perl à l'aide; il est probable que Python et Ruby ont des modules pour aider trop.
InformationsquelleAutor Maulzey | 2013-07-09