Grep для содержимого между двумя маркерами с символами новой строки

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

Я пытался grep -r "<cron_expr>.*</run>" *, но, похоже, он не возвращается так, как ожидалось. Иными словами, он не показывает разрывы новой строки?

Итак, я думаю, реальный вопрос в том, как я могу узнать, что находится между двумя маркерами независимо от новой строки BS. Я не могу установить в этой системе, поэтому нет pcregrep = (

Может быть, AWK?

(Ps кто-то должен сделать тег AWK)

<crontab>
    <jobs>
        <enterprise_reward_balance_warning_notification>
            <schedule><cron_expr>1 * * * *</cron_expr></schedule>
            <run><model>enterprise_reward/observer::scheduledBalanceExpireNotification</model></run>
        </enterprise_reward_balance_warning_notification>
        <enterprise_reward_expire_points>
            <schedule><cron_expr>1 * * * *</cron_expr></schedule>
            <run><model>enterprise_reward/observer::scheduledPointsExpiration</model></run>
        </enterprise_reward_expire_points>
    </jobs>
</crontab>

Я просто хочу показывать, что в строке <schedule> и <run> (если их больше одного, как указано выше) каждый раз, когда я вижу, и в каком файле они находятся.

3
задан 5 May 2012 в 02:12

2 ответа

AWK сценария

AWK является, вероятно, ответом с помощью/, запускаются/,/stop/шаблон как это:

/<schedule>/,/<\/schedule>/ {
    print;
}
/<run>/,/<\/run>/ {
    print;
}

Это распечатает все в расписании и выполнит теги (включая теги) и сохранит новые строки. Адаптируйте его для печати то, в чем Вы нуждаетесь. Выполнять его:

cat myfile.txt | awk -f script.awk

таблица стилей

XSLT Здесь является версией XSLT, которая должна сделать что-то очень похожее. Выполните его с помощью xsltproc, который должен быть установлен по умолчанию.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="schedule">
    <xsl:value-of select="." />
</xsl:template>

<xsl:template match="run">
    <xsl:value-of select="." />
</xsl:template>

</xsl:stylesheet>
2
ответ дан 5 May 2012 в 02:12

Существует много способов сделать то, что я думаю, что Вы хотите, также делают.

Вы могли использовать sed

скажите, что я хотел получить числа промежуточный lspci-nn

это выкладывает числа как это

[1234:4321]

Я сделал бы это

lspci -nn| sed 's/.*\[\(.*\)\].*/\1/'

Это - мое первое сообщение здесь, таким образом, я надеюсь, что символ ESC корректен. Но я не уверен, что Вы пытаетесь сделать.

0
ответ дан 5 May 2012 в 02:12

Другие вопросы по тегам:

Похожие вопросы: