如何在grep中显示匹配模式的一部分? [英] How to display part of matched pattern in grep?

查看:123
本文介绍了如何在grep中显示匹配模式的一部分?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从abc_12_1这样的文本中提取12个。我想这样

I wanted to extract 12 from a text like "abc_12_1". I am trying like this

echo "abc_12_1" | grep -Eo '[a-zA-Z]+_[0-9]+_1'
abc_12_1

但是我无法选择第一个字符串后面的数字,上面的命令的输出是整个字符串。我正在寻找grep中的一些替代方法,这是我在遵循Perl模式匹配方面的一种选择。

But I am not able to select the digit after first _ in string, the output of above command is whole string. I am looking for some alternative in grep which I have in following Perl pattern matching.

perl -e '"abc_55_1" =~ m/[a-zA-Z]+_([0-9]+)_1/ ; print $1'
55

grep可以吗?

推荐答案

使用 perl

Using perl:

$ echo "abc_12_1" | perl -lne 'print /_(\d+)_/'
12

grep

$ echo "abc_12_1" | grep -oP '(?<=_)\d+(?=_)'
12

这篇关于如何在grep中显示匹配模式的一部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆