我想知道是否sed可用于修改而不是通过替换模式的第一个字符来替换模式。我正在处理包含 的文本文件AXYZ
,其中XYZ
有各种三个字母的组合。有没有办法告诉sed全部更改AXYZ
为 XYZ
,用A
空格替换? - 麦克风
答案1
(...)
使用三个字母组合的捕获组,即([A-Z]{3})
和 用于\1
在替换中引用该(第一个)组。
例子:
$ printf '%s\n' AGLU AASP ALYS AVAL | sed -E 's/A([A-Z]{3})/ \1/'
GLU
ASP
LYS
VAL
答案2
是的,sed
应该可以 - 如果我明白你真正想做的事情。下面是一个示例,其中包含字母 的字符串(可能是文件名)A
。战略经济对话替换下面将替换第一次出现A
分别带有_
、 `` (零长度字符串)和 的字母。
$ SOMEFILE="AASP"
$ echo $SOMEFILE
AASP
$ echo $SOMEFILE | sed "s/A/_/"
_ASP
$ echo $SOMEFILE | sed "s/A//"
ASP
$ echo $SOMEFILE | sed "s/A/ /"
ASP