Regex 尝试在指定的字符串后grep

Regex 尝试在指定的字符串后grep,regex,grep,Regex,Grep,所以我有一个很大的文件,里面有一系列电子书,每个都有标签,比如Title:thebook Title(可能包含“特殊字符”)。为了匹配标题之后的所有内容,我使用了以下grep命令:字符串以及后续空格,以获取所有书籍标题: grep -P -o '(?<=^Title:\s).*' ebooks_full.txt grep-P-o'(?您的电子书中有Windows行结尾,因此每次匹配都以CR结尾。在Linux上,这将有效地导致打印行,然后立即删除,因此您不会在输出中看到它 简单的解决方案:

所以我有一个很大的文件,里面有一系列电子书,每个都有标签,比如
Title:thebook Title(可能包含“特殊字符”)
。为了匹配
标题之后的所有内容,我使用了以下grep命令:
字符串以及后续空格,以获取所有书籍标题:

grep -P -o '(?<=^Title:\s).*' ebooks_full.txt

grep-P-o'(?

您的电子书中有Windows行结尾,因此每次匹配都以

CR
结尾。在Linux上,这将有效地导致打印行,然后立即删除,因此您不会在输出中看到它

简单的解决方案:从匹配中删除
CR

grep -P -o '(?<=^Title:\s)[^\r]*' ebooks_full.txt
(但是,这将保留CRs,因此如果要将输出捕获到文件中,请使用第一种解决方案。)


更好的技术解释:CR(回车)导致光标移动到行首。
grep-o
(以彩色输出时)放置一个
ESC[K
在每一行的末尾进行排序,这会将屏幕擦除到行的末尾。

您是否有生成此行为的数据样本?您的
grep
命令对我来说很好,问题中提供了一个样本标题。目光敏锐-我通常不会立即想到移动数据的异常情况在Windows和Linux平台之间。:)
grep --color=no -P -o '(?<=^Title:\s).*' ebooks_full.txt