Как посчитать, сколько раз слово встречается в XML-файле - PullRequest
3 голосов
/ 15 февраля 2010

Мне было поручено выполнить проверку качества XML-файла машинного перевода. Переводы с английского на иностранный язык. У меня есть около 2000 блоков перевода в файле, и я должен проверить 200 из них, добавив свои замечания в блок, заключенный в тег с атрибутом качества. Существует ли команда linux или какой-либо текстовый редактор, который может подсчитать количество добавленных мной тегов комментариев или просто количество раз, когда слово «/ comment» встречается, поэтому мне не нужно отслеживать вручную?

Ответы [ 5 ]

8 голосов
/ 15 февраля 2010

grep '/ comment' yourfile.xml -o | wc -l

2 голосов
/ 15 февраля 2010

Эта таблица стилей XSLT может быть запущена на любой платформе и подскажет вам, сколько элементов комментариев есть в документе XML:

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" encoding="UTF-8" omit-xml-declaration="yes"/>
  <xsl:template match="/">
    <xsl:value-of select="count(//comment)"/>
  </xsl:template>
</xsl:stylesheet>

Если вы добавите инструкцию обработки XSLT вверху XML-файла, которая указывает на этот XSLT (например, <?xml-stylesheet href="countComments.xsl" type="text/xsl"?>), тогда вы можете просто загрузить XML-файл в браузер и увидеть отображаемое число.

0 голосов
/ 15 февраля 2010

Пока комментарии появляются в отдельной строке, вы можете попробовать

cat file | grep -c comment

-c означает «считать».

0 голосов
/ 15 февраля 2010

Если вы знаете, что </comment> встречается не более одного раза в строке, просто используйте grep -c "</comment>". Пример:

[~/.logs]> grep -c ldap johnf.2010-02-12.log
103

Поиск строки ldap в файле johnf.2010-02-12.log. Строка отображается в 103 отдельных строках.

0 голосов
/ 15 февраля 2010

ваш тег говорит о Linux, так что я предполагаю, что у вас есть * nix инструменты, такие как awk

awk '{for(i=1;i<=NF;i++){if($i=="/comment"){++c} } }END{print "total: "c}' xmlfile
...