我有多个文件包含格式为XXX XXX XXXX或+ XX XXXXXX XXXX或XXXXXXXXXX的电话号码。我可以列出包含特定号码的所有电话号码吗? '845'针对每个文件名。
目前我正在使用: -
egrep -H 845 *
答案 0 :(得分:0)
你可以试试这个:
awk '/845/ {print FILENAME,FNR,$0}' *
或者这个:
grep -rF '845' *
这不仅仅会在电话号码上打击,而是与此nubers一致 你不知道这是一个数字的中间,开始还是结束。
答案 1 :(得分:0)
列出比赛周围的周围数字,但没有别的,
grep -Ho '[0-9]*845[0-9]*' files
如果您的电话号码可以包含空格和标点符号,可以将其添加到character classes;但要小心,以免正则表达式匹配两个相邻的电话号码。 (如果它们总是由不在字符类中的文本分隔,那么你很好。)
(此特定正则表达式中没有-E
,所以我没有使用egrep
。)
答案 2 :(得分:0)
这可能会做你想要的(使用GNU作为单词分隔符):
$ cat file
now is the 123 845 1234 winter of +01 238456 5432
our 1845234567 discontent.
$ cat tst.awk
{
while ( match($0,/(\<(([0-9]{3} ){2}[0-9]{4}|[0-9]{10})|[+][0-9]{2} [0-9]{6} [0-9]{4})\>/) ) {
tgt = substr($0,RSTART,RLENGTH)
$0 = substr($0,RSTART+RLENGTH)
if ( tgt ~ /845/ ) {
print tgt
}
}
}
$ awk -f tst.awk file
123 845 1234
+01 238456 5432
1845234567
如果没有,请编辑您的问题以提供一些示例输入和预期输出。