Регулярное выражение для соответствия одному экземпляру символа

Попробуйте это,

while IFS= read -r line; do
    NAME="`echo "$line" | awk '{$1=""; print}'`"
    sed "s#^<eName>Licensed Original.*</eName>#<eName>Licensed Original$NAME</eName>#;s#^<eName>Licensed Reversal.*</eName>#<eName>Licensed Reversal$NAME</eName>#" LO.xml >> LR.xml
done < input.txt
8
03.10.2021, 16:36
1 ответ

Использование Raku (, ранее известного как Perl _6)

raku -pe '.=trim; s:g/ (<-[_]>?.+ <-[_]>?) /_$0_/;'  |
raku -ne '.words.split( / <-[@]>+ / ).map(*.chars).grep( * % 2 ).say;'

Пример ввода (от @cas, допустимы только строки #1 и #6):

@@Var1@@ words words words @@Var2@@  
@Var1@@ words words words @@Var2@@   
@@Var1@ words words words @@Var2@@   
@@Var1@@ words words words @Var2@@   
@@Var1@@ words words words @@Var2@   
@@Var1@@@@var2@@ words words words   
@@Var1@@@var2@@ words words words    
@@Var1@@@@ words words words words   

Пример вывода(без вызоваgrepв конце):

(0 2 2 2 2 0)
(0 1 2 2 2 0)
(0 2 1 2 2 0)
(0 2 2 1 2 0)
(0 2 2 2 1 0)
(0 2 4 2 0)
(0 2 3 2 0)
(0 2 4 0)

Пример вывода(с вызовомgrepв конце):

()
(1)
(1)
(1)
(1)
()
(3)
()

[Примечание выше --вывод первого вызова raku -pe '…'передается на ввод второго вызова raku -ne '…'].

Было опробовано несколько вещей, первая из которых — «защита» начала -строки -и конца -строки -путем добавления _подчеркивания там, где его раньше не было. Разделение на wordsоставляет нетронутыми символы подчеркивания _(, часто упоминаемые на этом форуме, спасибо @Stéphane Chazelas ).Затем, используя деструктивный оператор Раку splitдля всего, что не-@и считает chars, обнаруживаются некоторые симпатичные числовые закономерности. Ошибочные строки кажутся легко выделяемыми -. Единственная необнаруженная строка — это строка #8. Ограниченный анализ (8 тестовых строк ), но неплохое начало.

https://docs.raku.org/routine/grep
https://raku.org

0
05.10.2021, 23:29

Теги

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