Regex 如何在grep中显示部分匹配图案?
我想从像“abc_12_1”这样的文本中提取12。我正在这样努力Regex 如何在grep中显示部分匹配图案?,regex,perl,grep,Regex,Perl,Grep,我想从像“abc_12_1”这样的文本中提取12。我正在这样努力 echo "abc_12_1" | grep -Eo '[a-zA-Z]+_[0-9]+_1' abc_12_1 但我无法选择字符串中第一个uu后的数字,上面命令的输出是整个字符串。我正在寻找grep中的一些替代方案,我在下面的Perl模式匹配中找到了这些替代方案 perl -e '"abc_55_1" =~ m/[a-zA-Z]+_([0-9]+)_1/ ; print $1' 55 是否可以使用grep?一种方法是使用aw
echo "abc_12_1" | grep -Eo '[a-zA-Z]+_[0-9]+_1'
abc_12_1
但我无法选择字符串中第一个uu后的数字,上面命令的输出是整个字符串。我正在寻找grep中的一些替代方案,我在下面的Perl模式匹配中找到了这些替代方案
perl -e '"abc_55_1" =~ m/[a-zA-Z]+_([0-9]+)_1/ ; print $1'
55
是否可以使用grep?一种方法是使用
awk
echo "abc_12_1" | awk -F_ '{print $2}'
12
或grep
echo "abc_12_1" | grep -o "[0-9][0-9]"
12
将grep
与扩展正则表达式一起使用
grep -oE "[0-9]{2}" # Get only hits with two digits
grep -oE "[0-9]{2,}" # Get hits with two or more digits
一种方法是使用
awk
echo "abc_12_1" | awk -F_ '{print $2}'
12
或grep
echo "abc_12_1" | grep -o "[0-9][0-9]"
12
将grep
与扩展正则表达式一起使用
grep -oE "[0-9]{2}" # Get only hits with two digits
grep -oE "[0-9]{2,}" # Get hits with two or more digits
您可以使用
cut
:
cut -d_ -f2 <<< "abc_12_1"
两者都会产生
12
您可以使用cut
:
cut -d_ -f2 <<< "abc_12_1"
使用
perl
,两者都会产生12
:
$ echo "abc_12_1" | perl -lne 'print /_(\d+)_/'
12
或grep
:
grep -oP '(?<=_).*?(?=_)' <<< "abc_12_1"
$ echo "abc_12_1" | grep -oP '(?<=_)\d+(?=_)'
12
$echo“abc_12_1”| grep-oP'(?使用perl
:
$ echo "abc_12_1" | perl -lne 'print /_(\d+)_/'
12
或grep
:
grep -oP '(?<=_).*?(?=_)' <<< "abc_12_1"
$ echo "abc_12_1" | grep -oP '(?<=_)\d+(?=_)'
12
$echo“abc_12_1”| grep-oP'(?@Renjith Tryecho”| grep-oP'(?@Renjith Tryecho“|12_1”| grep-oP'(?@Renjith Tryecho”| grep-oP')?