Просто любопытно, есть ли способ показать результат между двумя маркерами?
Я пытался 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>
(если их больше одного, как указано выше) каждый раз, когда я вижу, и в каком файле они находятся.
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>
Существует много способов сделать то, что я думаю, что Вы хотите, также делают.
Вы могли использовать sed
скажите, что я хотел получить числа промежуточный lspci-nn
это выкладывает числа как это
[1234:4321]
Я сделал бы это
lspci -nn| sed 's/.*\[\(.*\)\].*/\1/'
Это - мое первое сообщение здесь, таким образом, я надеюсь, что символ ESC корректен. Но я не уверен, что Вы пытаетесь сделать.