Sed, соответствующий проблеме, вывод не как ожидалось

Что я должен выполнить:

Я хочу рекурсивно соответствовать всему от string1 до fixed_string (оба включенные) на text_files и произвести результаты на result_file.

Моя команда следующие:

sed -nf /path/to/patterns_file /path/to/lists/* > result_file

Например:

  • string1 в шаблонах: 4321/14.
  • fixed_string в шаблонах: ------------------------------------------------------

Содержание patterns_file как следует:

/\<4321\/14\>/,/------------------------------------------------------/p
/\<4319\/14\>/,/------------------------------------------------------/p
/\<5183\/14\>/,/------------------------------------------------------/p
/\<487\/08\>/,/------------------------------------------------------/p
/\<8767\/14\>/,/------------------------------------------------------/p
/\<8768\/14\>/,/------------------------------------------------------/p
/\<8769\/14\>/,/------------------------------------------------------/p
/\<10270\/01\>/,/------------------------------------------------------/p
/\<8354\/14\>/,/------------------------------------------------------/p
/\<8883\/14\>/,/------------------------------------------------------/p
/\<3978\/13\>/,/------------------------------------------------------/p
/\<6344\/13\>/,/------------------------------------------------------/p
/\<3882\/09\>/,/------------------------------------------------------/p
/\<8881\/14\>/,/------------------------------------------------------/p
/\<9913\/14\>/,/------------------------------------------------------/p
/\<6596\/13\>/,/------------------------------------------------------/p

Мои test_files как следуют (расположенный в каталоге списков)

JUZGADO_CIVIL_10_PRO_2014-10-24.TXT
JUZGADO_CIVIL_11_PRO_2014-10-24.TXT
JUZGADO_CIVIL_12_PRO_2014-10-24.TXT
JUZGADO_CIVIL_13_PRO_2014-10-24.TXT
JUZGADO_CIVIL_14_PRO_2014-10-24.TXT
JUZGADO_CIVIL_15_PRO_2014-10-24.TXT
JUZGADO_CIVIL_16_PRO_2014-10-24.TXT
JUZGADO_CIVIL_17_PRO_2014-10-24.TXT
JUZGADO_CIVIL_18_PRO_2014-10-24.TXT
JUZGADO_CIVIL_19_PRO_2014-10-24.TXT
JUZGADO_CIVIL_1_PRO_2014-10-24.TXT
JUZGADO_CIVIL_20_PRO_2014-10-24.TXT
JUZGADO_CIVIL_21_PRO_2014-10-24.TXT
JUZGADO_CIVIL_22_PRO_2014-10-24.TXT
JUZGADO_CIVIL_23_PRO_2014-10-24.TXT
JUZGADO_CIVIL_2_PRO_2014-10-24.TXT
JUZGADO_CIVIL_3_PRO_2014-10-24.TXT
JUZGADO_CIVIL_4_PRO_2014-10-24.TXT
JUZGADO_CIVIL_5_PRO_2014-10-24.TXT
JUZGADO_CIVIL_6_PRO_2014-10-24.TXT
JUZGADO_CIVIL_7_PRO_2014-10-24.TXT
JUZGADO_CIVIL_8_PRO_2014-10-24.TXT
JUZGADO_CIVIL_9_PRO_2014-10-24.TXT
JUZGADO_NOTARIAL_PRO_2014-10-24.TXT

Содержание одного txt файл загружается здесь: получите JUZGADO_CIVIL_18_PRO_2014-10-24.TXT

Остальная часть файлов подобна этому.

Проблема - это, когда существует другое выражение соответствия между string1 и fixed_string Я получаю дублированные или утроенные строки, как произведено, как это:

[...output omitted...]

Expte. N°: 8769/14        -Foja: 9- JARA MELAGRANI, DIEGO
               C/MUNICIPALIDAD DE RESISTENCIA S/EJECUCION DE HONORARIOS -
estesestese

                CARLOS D. LUGON
         -Abogado  Secretario -
Juzgado Civil y Comercial Nº 18

 "2014 Año de la concordia, el diálogo y la paz - S.S. Francisco"

Expte. Nº 8769/14 - MMMN
Resistencia, 20 de octubre de 2014.
Téngase al Dr. DIEGO JARA MELAGRANI por presentado, parte,
con el patrocinio letrado del Dr. MAURO DANIEL FOGLIATTI, con domicilio
legal constituido, dándosele en autos la intervención que por derecho
corresponda. A lo demás, estése a lo resuelto en el Expte.Nº 8768/14 que
corresponda. A lo demás, estése a lo resuelto en el Expte.Nº 8768/14 que
corre por cuerda.- NOT.-
corre por cuerda.- NOT.-


OMAR A. MARTINEZ
OMAR A. MARTINEZ
- Juez -
- Juez -
Juzgado Civil y Comercial Nº 18
Juzgado Civil y Comercial Nº 18


NOTA DE SECRETARIA:
NOTA DE SECRETARIA:
                                Se deja constancia que a fs.12/13 del Expte.Nº
                                Se deja constancia que a fs.12/13 del Expte.Nº
8768/14 caratulado "JARA MELAGRANI, DIEGO C/ MUNICIPALIDAD DE RESISTENCIA
8768/14 caratulado "JARA MELAGRANI, DIEGO C/ MUNICIPALIDAD DE RESISTENCIA
S/ EJECUCION DE HONORARIOS", se ha ordenado la acumulación de la presente
S/ EJECUCION DE HONORARIOS", se ha ordenado la acumulación de la presente
causa a aquellos actuados.- CONSTE. SECRETARIA, 20 de octubre de 2014.-
causa a aquellos actuados.- CONSTE. SECRETARIA, 20 de octubre de 2014.-

[...output omitted...]

------------------------------------------------------

[...output omitted...]

Здесь, например, существует '8768/14' между

'8769/14' and '------------------------------------------------------'.

Если не ясно, чего я хочу достигнуть или какова проблема, я могу попытаться далее разъяснить проблему.

Как может решить ту проблему? Существует ли лучшее и более эффективное решение этого?

2
задан 20 December 2014 в 17:14

2 ответа

Поскольку в 8769/14 "документе" Вы найдете строку "8768/14", таким образом, 2 шаблона будут соответствовать тем же строкам. Необходимо будет быть более конкретны относительно стартового диапазона, как

/^Expte. N°: 8769\/14\>/,/------------------------------------------------------/p

, Который только соответствует в начале строки.

2
ответ дан 19 November 2019 в 22:31

Nevermind, я нашел решение этой проблемы, добавляющей команду 'uniq' как в

sed -nf /path/to/patterns_file /path/to/lists/* | uniq > result_file

Спасибо так или иначе тем, которые не торопились, чтобы считать и помочь.

1
ответ дан 19 November 2019 в 22:31

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

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