【发布时间】:2017-02-09 03:48:03
【问题描述】:
我最近尝试使用 sed 从逗号和换行符分隔的枚举成员中生成一堆方法。我遇到了以下看起来不直观的行为:
$ echo 'Hello,' | sed 's/\(.*\),\?/"Hi \1!"/g'
"Hi Hello,!"
在这里,我尝试通过\(.*\) 将逗号之前的所有内容捕获到一个组中,然后我允许使用,\? 使用可选的逗号。我希望这会将\1 替换为第一个逗号之前的所有内容,即Hello,但由于某种原因,逗号也被包含在替换中,尽管它不在组内。为什么会这样?
【问题讨论】:
标签: linux bash unix sed terminal