如果特定模式的一部分使用扩展语法的sed和regex,则用新行替换空格

如果特定模式的一部分使用扩展语法的sed和regex,则用新行替换空格,regex,sed,nlp,text-processing,Regex,Sed,Nlp,Text Processing,因此,我有一个文本文件,其中包含多个实例,如下所示: word。一个或多个单词[某物:'else] 我需要用新行替换每个句点后的双空格,后跟一系列单词,然后是“[”,如下所示: word。\n单词或单词[something:'else] 我曾考虑在bash中使用sed命令和扩展的regex语法,但到目前为止没有任何效果……我尝试了不同的版本: sed-E的/(\)()(.*)(.\[)/\1\n\3\4/g'old.txt>new.txt 我是这方面的绝对初学者,所以我根本不确定我在做什么您的s

因此,我有一个文本文件,其中包含多个实例,如下所示:

word。一个或多个单词[某物:'else]

我需要用新行替换每个句点后的双空格,后跟一系列单词,然后是“[”,如下所示:

word。\n单词或单词[something:'else]

我曾考虑在bash中使用sed命令和扩展的regex语法,但到目前为止没有任何效果……我尝试了不同的版本:

sed-E的/(\)()(.*)(.\[)/\1\n\3\4/g'old.txt>new.txt


我是这方面的绝对初学者,所以我根本不确定我在做什么您的
sed
命令几乎正确(但包含一些冗余)

但是你不需要捕捉所有的东西,更简单的方法是

sed -E 's/\.  (.*\[)/.\n\1/' old.txt > new.txt
这可能适用于您(GNU-sed):


全局替换一个句点,后跟两个空格和一个或多个单词空格,空格后面跟一个方括号;句点后面跟一个换行符,后面跟来自regexp的匹配返回引用。

非常感谢,这正是我需要的!我不知道\w的存在。
sed -E 's/\.  (.*\[)/.\n\1/' old.txt > new.txt
sed -E 's/\.  ((\w+ )+\[)/\.\n\1/g' file