Поиск строки, при успешном поиске ближайшего шаблона

Вы не указываете, как используется FILE_VAR , но если я попробую $ (eval $ (FILE_VAR)) , то проблема в том, что cat не делает то, что вы хотите, вне правила. Обернуть его в $ (shell) может быть лучше:

define FILE_VAR
    $(shell cat /output/1.txt > /output/2.txt)
    $(eval s := $(shell cat /output/2.txt))
    $(eval FILENAME_BIN=$(word 1, $(s)).$(word 2, $(s)).$(word 3, $(s)).bin)
    $(eval FILENAME_JFFS2=$(word 1, $(s)).$(word 2, $(s)).$(word 3, $(s)).jffs2)
endef

$(eval $(FILE_VAR))                                                                     

all:                                                                                    
    echo $(FILENAME_BIN)

И я использовал > вместо >> , поэтому 2.txt не увеличивается при каждом запуске .

1
03.05.2017, 01:37
3 ответа

Это эквивалент sed:

$ cat file9
 <SubRecord1>
 <Property Name=Name>My Main Search Keyword</Property>
 <Property Name=Prompt>Dummy</Property>
 <Property Name=Default>Value i'm Concerned to Modify</Property>
 </SubRecord1>
 <SubRecord2>
 <Property Name=Name>My Main Search Keyword</Property>
 <Property Name=Prompt>Dummy</Property>
 <Property Name=Default>Do not Modify</Property>
 </SubRecord2>

$ sed -r '/\bSubRecord1\b/!b;n;n;n;s/(<Property Name=Default>)(.*)(<\/Property>)/\1AAAA\3/' file9
 <SubRecord1>
 <Property Name=Name>My Main Search Keyword</Property>
 <Property Name=Prompt>Dummy</Property>
 <Property Name=Default>AAAA</Property>
 </SubRecord1>
 <SubRecord2>
 <Property Name=Name>My Main Search Keyword</Property>
 <Property Name=Prompt>Dummy</Property>
 <Property Name=Default>Do not Modify</Property>
 </SubRecord2>

Использование границ слов \b гарантирует, что шаблон sed /SubRecord/ не будет соответствовать SubRecord1 или SubRecord2

0
27.01.2020, 23:13

XML должен обрабатываться инструментом, поддерживающим XML.

XMLStarlet является таким инструментом.

Вот как вы устанавливаете значение узла Property, чей атрибут Name имеет значение Default и значение которого не равно abc.txt. ] или xyx:

xml ed -u '//SubRecord/Property[@Name="Default" and . != "xyx" and . != "abc.txt"]' -v 'abc.txt' file.xml

Дан файл XML, подобный следующему:

<?xml version="1.0"?>
<Record>
  <SubRecord>
    <Property Name="Name">My Main Search Keyword</Property>
    <Property Name="Prompt">Dummy</Property>
    <Property Name="Default">zzz</Property>
  </SubRecord>
  <SubRecord>
    <Property Name="Name">My Main Search Keyword</Property>
    <Property Name="Prompt">Dummy</Property>
    <Property Name="Default">abc.txt</Property>
  </SubRecord>
  <SubRecord>
    <Property Name="Name">My Main Search Keyword</Property>
    <Property Name="Prompt">Dummy</Property>
    <Property Name="Default">xyx</Property>
  </SubRecord>
</Record>

получается

<?xml version="1.0"?>
<Record>
  <SubRecord>
    <Property Name="Name">My Main Search Keyword</Property>
    <Property Name="Prompt">Dummy</Property>
    <Property Name="Default">abc.txt</Property>
  </SubRecord>
  <SubRecord>
    <Property Name="Name">My Main Search Keyword</Property>
    <Property Name="Prompt">Dummy</Property>
    <Property Name="Default">abc.txt</Property>
  </SubRecord>
  <SubRecord>
    <Property Name="Name">My Main Search Keyword</Property>
    <Property Name="Prompt">Dummy</Property>
    <Property Name="Default">xyx</Property>
  </SubRecord>
</Record>

(первая SubRecord была изменена)

XMLStarlet доступен по адресу http://xmlstar.sourceforge.net/ (но сначала проверьте свой менеджер пакетов). Иногда его исполняемый файл называется xmlstarlet, а не просто xml.

4
27.01.2020, 23:13

Вы не можете анализировать [X]HTML/XML с помощью регулярных выражений. Поскольку HTML/XML не может быть проанализирован регулярным выражением. Regex не является инструментом, который можно использовать для правильного анализа HTML/XML. Регулярные выражения — это инструмент, недостаточно сложный для понимания конструкций, используемых в HTML/XML. HTML/XML не является обычным языком и, следовательно, не может анализироваться с помощью регулярных выражений. Запросы регулярных выражений не приспособлены для разбиения HTML/XML на значимые части. Даже расширенные нерегулярные регулярные выражения, используемые в Perl, не справляются с задачей разбора HTML/XML. Ты никогда не заставишь меня сломаться. HTML/XML — это языки достаточной сложности, чтобы их нельзя было проанализировать с помощью регулярных выражений. Даже Джон Скит не может анализировать HTML/XML с помощью регулярных выражений. Каждый раз, когда вы пытаетесь разобрать HTML/XML с помощью регулярных выражений, нечестивое дитя плачет кровью девственниц, а русские хакеры взламывают ваше веб-приложение. Разбор их с помощью регулярных выражений вызывает испорченные души в царство живых. Они и регулярное выражение идут рука об руку, как любовь, брак и ритуальное детоубийство.

не может удержаться, слишком поздно. Сила регулярных выражений и HTML/XML вместе в одном концептуальном пространстве разрушит ваш разум, как водянистая замазка. Если вы анализируете регулярное выражение, вы уступаете Им и их кощунственным методам, которые обрекают всех нас на нечеловеческий труд ради Того, Чье Имя не может быть выражено на Основном Многоязычном Плане, он приходит. HTML -плюс регулярное выражение -разжижают нервы разумного, пока вы наблюдаете, как ваша душа увядает под натиском ужаса.Парсеры HTML/XML на основе Rege̿̔̉x -— это рак, который убивает StackOverflow слишком поздно, слишком поздно, мы не можем быть спасены проделки ребенка гарантируют, что регулярное выражение поглотит все живые ткани (, кроме для HTML, чего он не может, как было предсказано ранее)Господи, помоги нам, как кто-то может пережить это бедствие использование регулярных выражений для разбора HTML обрекло человечество на вечность ужасных пыток и дыр в безопасности использование rege x как инструмент для обработки HTML устанавливает разрыв ch между этим миром и ужасным царством несовершенных сущностей (, подобных сущностям SGML, но более коррумпированным )простым проблеском мира reg​ ex парсеры для HTML мгновенно ​перенесут ap сознание программиста i в aw orl d непрекращающегося крика, он приходит , зараза sl ithy regex -l поглотит ваш синтаксический анализатор HT ​ML, приложение и существование на все времена как Visual Basic только хуже он приходит он приходит es не fi ​ght h e com̡e̶s, ̕h̵i ​s un̨ho͞ly radiańcé de строим все условия, HTML-теги lea͠ki̧n͘g fr̶ǫm ̡yo​ur eye͢s̸ ̛l̕ik͏e liq ​uid p ain,песня регулярного опыта анализ сеанса выведет ​nguish the voices of mor​ tal man from the sp ​вот я вижу это вы видите ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ это прекрасный т​ он ф inal snufфинг о ф ложь​ s человека ВСЁ LOŚ͖̩͇̗̪̏̈́T ALL I​SL OST th e pon̷y он пришел s he c̶̮om es he come st he ich​ or permeat es al l MY FAC E MY FACE ᵒHHH HOGE N O NO NOO̼O на θ STOP T он *̶͑̾̾ ̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨ E̠̅s ͎a̧͈͖r̽̾̈́͒͑en OT Rè̑ͧ̌aͨl̘̝̙ͤ̾̆ Za̡͊͠͝lg ͮ҉̯͈͕̹̘ o͇̹̺ɲ̴ȳ̳ th̘ ͖͖̉̉ ͠p̯͍̭o̚ n̐y̡ h̸̡̪̯ͨ͊̽̅̾ȩ̬̩̾͛ͪ̈͘ ̶̧̨̹̭̯ͧ̾ͬc̷̙̝͖ͭ̏ͥͮ͟oͮ͏̮̪̝͍m̖͊̒ͪͩͬ̚̚͜ȇ̴̟̟͙̞ͩ͌͝

3
27.01.2020, 23:13

Теги

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