我想使用sed提取括号内的原子符号。
我的数据格式是C(X12)
,我只想要X符号
例如:测试命令:
echo "C(Br12)" | sed 's/[0-9][0-9])$//g'
给我CCD_ 2。
您可以使用
sed -n 's/.*((.*)[0-9]{2})$/1/p'
查看在线演示:
sed -n 's/.*((.*)[0-9]{2})$/1/p' <<< "c(Br12)"
# => Br
详细信息
-n
-抑制默认行输出.*((.*)[0-9]{2})$
-匹配的正则表达式.*
-任何文本(
-(
字符(.*)
-捕获组1:最后一个之前的任何文本[0-9]{2}
-两位数)$
-字符串末尾的)
1
-替换为组1值p
-打印替换的结果
例如:
echo "C(Br12)" | sed 's/C((.).*/1/'
C(
-完全匹配C(
.
匹配任何内容- CCD_ 17-匹配任意一个字符-并且";记住";它在反向引用
1
中 .*
忽略其背后的一切C(Br
0——用记忆中的东西代替它。第一个字符
有关详细信息,请研究sed
、regex和backreferences。
尝试使用以下命令
echo "C(BR12)" | cut -d "(" -f2 | cut -d ")" -f1 | sed 's/[0-9]*//g'
切割工具会裂开,让你把绳子夹在中间。然后将字符串传递给sed,以替换字符串中的数字。
不是一个完全sed的解决方案,但这将为您提供输出。