Mon XML apercevoir quelque chose comme ceci:
<elements> <elem> ....bunch of other elements </elem> </elements>
6 Réponses :
Londres, P>
essayer acclamations. Keith. P>
PS: Il est continuellement plus facile de compter les étiquettes de fermeture, Coz, ils n'ont pas d'attributs; -) p> fgrep -c ' elem>' $ nom de fichier code> p>
fgrep code> est un utilitaire UNIX standard, pas du tout sûr de Linux cependant. Le commutateur
-c code> signifie compte em>. P>
Compter les balises de fermeture peut donner des résultats incorrects, en raison de la forme courte
Ouais ... n'avait pas pensé à
De plus, les lignes correspondantes du nombre de greps et non des correspondances. Donc, s'il y a plusieurs
@OP, tous les solutions Cette solution suppose que vous savez comment vos tags d'élève seront comme. Non grep code> a une "défaillance" fondamentale en ce qu'elle manquera des comptes si plus de 1
awk code> pour compter programmatiquement
Merci pour votre réponse, mais j'ai besoin de passer du contenu de fichier à cela avec un tuyau puis de taper Awk / Grep ou quelle que soit la commande, est-ce possible avec cela? Comment économisez-vous un script awk comme .awawk? Actuellement, je reçois awk: ^ Erreur de syntaxe code>
Enregistrez-le comme un script shell. Appelez ensuite le script Shell de la ligne de commande. par exemple ./ myscript.sh code>. Assurez-vous de le rendre exécutable.
Exemple Yourfile.xml: P> Utilisez sortie: grep code> seul ne vous aidera pas dans tous les cas, mais c'est un cas facile pour XMLSTARLET . Vous pouvez correspondre à
elem code> avec
xmlstarlet code>, puis comptez les nouvelles lignes avec
wc -l code>. Les nouvelles lignes moins 1 sont le nombre d'éléments.
xmlstarlet code> et
wc-l code>: p>
3 code> p> p> p> p>
L'outil que l'utilitaire est dans le xml_grep code> fait ce que vous voulez - essayez ce que vous voulez - essayez ce que vous voulez:
xml-twig-outils code> Forfait sur Debian / Ubuntu, et le La documentation est ici . < / p> p>
@Mark Longair Cela semble bien, mais je ne trouve pas cette commande sur mon Linux, comment puis-je l'installer?
@London: Quelle distribution utilisez-vous?
Je n'ai pas accès à un système de Red Hat, mais vous pouvez essayer: Yum Installez Perl-XML-Twig code>
Il s'installe également avec cpan xml :: Twig code>
Vous pouvez même écrire xml_grep -count elem exemple.xml (pas besoin de la //)
Travaillé comme un charme. Je n'ai eu que d'obtenir le colis installé! Merci Mark
n'utilise pas d'expressions régulières pour analyser ou numériser des fichiers XML forts> La responsabilité obligatoire étant tirée, voici ma solution: p> Cependant, vous serez pris par la déclaration et les valeurs par défaut de Nasty Nast Namespace. P> P>xmllint --nocdata --format myfile.xml | grep -c '</elem>'
Vous déclarez n'utilisez pas de regexnes et pourtant vous donner une solution à l'aide de la regex?
@London C'est l'ironie ... L'avertissement doit être émis à chaque occasion. Bien que vous ayez semblé rechercher une solution de la coquille. Je vous ai donné un qui a, imho, un bon compromis entre l'exactitude et la rapidité.
Vous pouvez également utiliser xmllint code>:
Actuellement, c'est la meilleure réponse jusqu'à présent dans ce fil. L'utilisation d'un outil XML approprié est la voie à suivre, pas une solution hacky Grep.
Et si l'élément a un préfixe d'espace de noms?