如何使用grep获取字符串中的第n个数字字段?

陈俊

如何使用grep获取第二个数字字段?例如,有一个字符串 12 34 56 78 ,我想得到第三个数字,我可以将字符串分成不同的标记:

echo "ab12 34_56.78" | grep -Eo "[[:digit:]]+" 

输出是

12 
34
56
78

如何从这里选择第n个数字?

假设您这样做了N=3(或您想要的任何领域),有几种 bash 可能性

echo "ab12 34_56.78" | grep -Eo "[[:digit:]]+" | tail -n+$n | head -n1
echo "ab12 34_56.78" | grep -Eo "[[:digit:]]+" | tr '\n' '\t' | cut -f$N

您可以在 awk 中轻松完成此操作,无需额外的 shell 命令:

echo "ab12 34_56.78" | awk -vN=3 -F'[^[:digit:]]+' '{print $(N+($1==""))}'

-F将字段分隔符设置为匹配任何非数字序列的正则表达式;添加($1=="")N是对付有第一个数字之前,没有非数字的可能性。

如果您有 Gnu grep 或其他提供 PCRE 的 grep 实现,您可以使用\K“匹配点重置”断言:

echo "ab12 34_56.78" | grep -Po '(?:[[:digit:]]+[^[:digit:]]+){2}\K[[:digit:]]+'

或者如果你想用来$N控制匹配的数量:

echo "ab12 34_56.78" | grep -Po '(?:[[:digit:]]+[^[:digit:]]+){'$((N-1))'}\K[[:digit:]]+'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Razor-如何获取字符串的n个数字字符?

如何使用PHP从字符串中删除前n个数字字符?

如何在PHP中获取字符串中字母数字字符的长度?

如何使用sed或awk在方括号[]之后获取多个数字字符串

如何使用python regex获取字符串的前两个数字

使用Javascript + Regex获取字符串中的第二个数字?

Swift-从字符串中仅获取字母数字字符

替换字符串中的第n个数字

获取字母数字字符串中最后一个数字之后的文本

如何在django的外键字段中获取字符串值而不是数字?

如何提取字母数字字符串

如何获取字符串中的第n次出现?

如何提取字符串末尾的非数字字符和数字字符?

我需要帮助来获取字符串的前n个字符(直到数字字符开始)

如何添加两个数字字符串?

使用Javascript如何从字母数字字符串中获取排序顺序数组中的数字

如何使用python和regex获取字符串左侧的第一个数字?

使用javascript正则表达式获取字符串中的最后一个数字

在分隔的数字字符串中获取数字

在Python中获取字符串中的第n个字符

在rust中获取字符串中第n个字符的值

从字符串中获取数字字符

如何在R中的字母数字字符串中获取数字/字母索引模式?

如何从字符串中提取数字字段?

PHP如何获取字符串中出现的第二个数字

如何在jexl中连接两个数字字符串?

获取字符串Regex Python括号中的两个数字

获取字符串中的最后一个数字块

如何获取字符串开头对应字符的个数