这是输入:
asdfZE3033141xycf
asdfINSFRHxycf
我需要这个输出:
asdfZE3033141
asdfINSFRHxycf
所以我用了一个:
echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed '/asdfZE3033141xycf/ s=xycf$=\n='
但我一般需要这个。所以我需要 sed every:
asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf
文本文件中的行。我只是无法将“[0-9]”放入 sed 中。我怎样才能做到这一点?
答案1
为什么不稍微修改一下你的工作:
echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed -e 's/^\(asdfZE[0-9]\{7\}\)xycf$/\1\n/'
答案2
“[0-9]”有什么问题?为什么不能将其放入 sed 中?
使用时可以简单地使用
sed '/asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf/s=xycf$=\n=' file
甚至
sed '/asdfZE[0-9]\{7\}xycf/s=xycf$=\n=' file
sed 在搜索模式中支持正则表达式。
答案3
不明白你的意思。
关于什么:
sed 's/^\(asdfZE[0-9]\{7\}\)xycf$/\1\
/'
? (反斜杠后跟一个真正的换行符是在命令右侧插入换行符的标准方法s
(而不是\n
))。