我输入了如下行(它是 sam 格式的 CIGAR 字符串,但现在并不重要):
123M76N55M4S
6M7N25M
32M488N
我想提取所有 N 和前面的数字:
76N
7N
488N
我尝试过这个命令:
sed -r 's/^.*([0-9]+N).*$/\1/'
但我输出的只有最后一位数字。我怎样才能获得所有前面的数字?
答案1
这已经足够了:
grep -o '[0-9]\+N'
您的 sed 正则表达式失败,因为.*
太贪婪了。您必须确保不消耗任何数字:
sed -r 's/(.*[^0-9])?([0-9]+N).*/\2/'