仅限连续数字并删除任何更长和更短的数字

时间:2017-04-14 07:25:03

标签: linux sed

我尝试提取连续数字,只有5个连续数字,我想删除所有字母,任何其他不连续数字的数字。

echo ajik84928ijs23d8ff89fj | sed 's/[^0-9]*//g' > answer.txt
echo ajik84928ijs23d8ff89fj | grep -E -o "[0-9]+"
echo ajik84928ijs23d8ff89fj| tr -d [a-z]

我只想要84928,但我只能得到8492823889,我搜索了很多帖子,但仍然是上面显示的最接近的答案,谢谢你的帮助。像sed,tr,grep,pearl这样的东西会有所帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

使用GNU sed:

echo ajik84928ijs23d8ff89fj | sed -r 's/.*([0-9]{5}).*/\1/'

使用GNU grep:

echo ajik84928ijs23d8ff89fj | grep -E -o "[0-9]{5}"

输出:

84928

答案 1 :(得分:0)

grep 仅匹配5位数字(不少于而不是更多)的方法:

echo "ajik84928ijs23d8ff89fj111111123" | grep -Po '(^|[^0-9])\K[0-9]{5}(?=[^0-9]|$)'
84928