捕获sed的匹配

问题描述:

我刚开始尝试使用sed,并没有真正了解如何匹配捕获工作:如果我有这样的代码来捕获两个词sed 's/\([a-z]*\).*\([a-z]*\).*/\1 \2/'为什么不是捕获的第二个词?捕获sed的匹配

编辑1:比方说,我有这样的字符串:“棕色的狐狸跳过懒惰的狗”。我想SED匹配“棕色”,但它只匹配的第一个字

+0

给我们的字符串(或)针对上述'sed'命令没有工作 – Inian

+2

输入文件''是贪婪的..它会尝试尽可能匹配..和而整个表达式匹配时,优先选择表达式首先匹配......并且由于'*'表示零匹配或更多匹配,所以'。*'或'[az] *'为空是完全可以的 – Sundeep

+1

替换'。*'中的空格字符...'sed's/\([az] * \)* \([az] * \)。*/\ 1 \ 2 /'' – Sundeep

(报价森迪普•,只是为了让一个Q/A对。)

用空格字符替换圆点.* ...

sed 's/\([a-z]*\) *\([a-z]*\).*/\1 \2/' 
+0

为了更好的回溯安全性,请使用'{1,}'而不是'*'。我希望这不是延伸。 – Yunnosch