使用正则表达式进行sed替换输出

约翰·杜

我有一个名为tester.txt的sedfile,其中包含此代码。

s/\(\\ref\s*\) \(\w*,\) \(``\(\w*\s*\)*,\) \(.*\)/\1 ll\2 ll\3 dd\4/
/^\ref{A-Za-z}*/p

当我在以下文本上运行这些命令时,我得到一些不正确的输出。我不明白为什么要重复“正确”部分。“。*”不应该与其余文本匹配吗?不知道为什么会这样。任何帮助,将不胜感激。

输出:

 \ref llthis, ll``is hard af alright, ddalright

原文:

 \ref this, ``is hard af alright, finally,
埃德·莫顿

之内:

\(\\ref\s*\) \(\w*,\) \(``\(\w*\s*\)*,\) \(.*\)

只需计算您的捕获组:

1: \(\\ref\s*\)
2: \(\w*,\)
3: \(``\(\w*\s*\)*,\)
4: \(\w*\s*\)
5: \(.*\)

第4个(后来称为\4)位于第3个(\3)内,因此重复。您没有显示您实际期望获得的输出,所以这是一个猜测,但也许您想要:

\1 ll\2 ll\3 dd\5

代替:

\1 ll\2 ll\3 dd\4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章