Попробуйте это,
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
Использование 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 тестовых строк ), но неплохое начало.