sed匹配问题,输出不符合预期

sed匹配问题,输出不符合预期

我需要完成的任务是:

我想递归匹配所有内容字符串1固定字符串(均含)文本文件并将结果输出到结果文件

我的命令如下:

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

我的测试文件如下(位于列表目录中)

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...]

例如,这里

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

如果我不清楚想要实现什么或者问题是什么,我可以尝试进一步澄清问题。

如何解决该问题?有没有更好更有效的解决方案?

答案1

因为在 8769/14 “文档”中,您会找到字符串“8768/14”,所以 2 个模式匹配相同的行。您需要更具体地说明起始范围,例如

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

这仅匹配一行的开头。

答案2

没关系,我找到了解决这个问题的方法,添加命令“uniq”,如下所示

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

无论如何,感谢那些花时间阅读并提供帮助的人。

相关内容