我正在尝试追加_out
与以下sed命令中显示的正则表达式匹配的任何内容。本_out
应该是前[ (]
。
sed -n '/[^_]lm[01?]_.*[ (]/p'
该命令按我的预期正确返回了行。现在,当我尝试以下命令时会出现问题,我在其中定义了要在替换中使用的区域。
因此,例如,如果我有一个匹配项lm?_whatever(
,则应将其替换为lm?_whatever_out(
。
我用了
sed 's/\([^_]lm[01?]_.*\)\([ (]\)/\1_out\2/g' text_to_edit
您可能会猜到我很倒霉。我究竟做错了什么?
编辑:
这是一个解释更多的示例:
文本:
this will make absolutely no sense=lm?_hello <= four_lm1_hi(5:0) bla bla
lm1_blabbering(5:0)
应该变成
this will make absolutely no sense=lm?_hello_out <= four_lm1_hi(5:0) bla bla
lm1_blabbering_out(5:0)
为了只匹配您的lm
单词而不影响以下单词,您需要限制模式。我建议把.*
以[^[:blank:]]*
匹配不是空格或制表符其他0个或多个字符:
sed 's/\([^_]lm[01?]_[^[:blank:]]*\)\([ (]\)/\1_out\2/g' text_to_edit
(编辑)或者,如果介于_
和之间的唯一字符是字母数字字符,则可以使用
[[:alnum:]]
字符类:
sed 's/\([^_]lm[01?]_[[:alnum:]_]*\)\(.\)/\1_out\2/g' text_to_edit
这样,我们将确保仅lm?_hello
和lm1_blabbering
匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句