我的文字文件包含以下内容:
Bought line for campaign : 8326197571 on provider TEST
Bought line for campaign : 3326147521 on provider TEST
只想使用grep
电话号码从此文件获取,请尝试使用:
grep -oh '\d\{10\}' test.txt
在我的上面,它在服务器上运行完美无效。但是,如果我只是尝试:
grep '\d*' test.txt
它返回带有数字的所有字符串。
服务器grep版本
grep --version
grep (GNU grep) 2.5.1-FreeBSD
Mac版
grep (BSD grep) 2.5.1-FreeBSD
看起来像GNU和BSD不同的问题,但如何在GNU上运行?
答案 0 :(得分:1)
一种解决方案是使用[[:digit:]]
代替\d
来表示字符类:
$ grep -oh '[[:digit:]]\{10\}' <<< 'Bought line for campaign : 8326197571 on provider TEST
Bought line for campaign : 3326147521 on provider TEST'
8326197571
3326147521
或者,您可以使用-P
启用Perl样式的正则表达式来保留原始表达式(但不会转义大括号):
grep -ohP '\d{10}'