正则表达式 - 如何在搜索文件时防止或解决文件之间的干扰?

问题描述 投票:1回答:1

所以,我正在使用正则表达式来搜索语料库中的一堆文件。重点是找到报纸文章的标题。

这是我使用的:

cat *.txt | grep -P '(^[A-ZÖÄÜÕŠŽ].*[^\.]$)' --colour 

它找到以大写字母开头的行,后跟任何字符,但不以点结尾,适用于这些特定文件。

问题是两个文件互相干扰,一个文件最末端的点出现在另一个文件的开头,我得到了这个:

卡塔尔的所有门徒都证实,加入笑俱乐部后,他们的生活得到了显着改善。

有没有办法防止干扰而不实际修改文件或改变正则表达式的方法,以便排除开头的这个点?我必须说我是初学者,我试图找到解决方案,但没有一个是针对我的情况。

regex unix command-line
1个回答
0
投票

这些文件最后可能没有换行符,因此第一个文件的最后一行与第二个文件中的第一行合并。

您可以尝试即时添加换行符:

find *.txt | xargs -I{} sh -c "cat {}; echo ''" | grep ... grep -P '(^[A-ZÖÄÜÕŠŽ].*[^\.]$)' --colour

资料来源:https://stackoverflow.com/a/44675414/580346

© www.soinside.com 2019 - 2024. All rights reserved.