awk/sed 打印匹配符号之前的所有数字

awk/sed 打印匹配符号之前的所有数字

我输入了如下行(它是 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/'

相关内容