所以我有这个file.txt
,其中包含网页的源代码。我试图将file.txt
中的所有电话号码放到另一个文件中,每行一个。源代码中的所有电话号码都卡在字符串tel:
和;
到目前为止,我已成功将网页的源代码保存到file.txt中:
echo $(wget http://www.some-web-page.com -q -O ) > file.txt
只需打印出我用过的所有电话号码:
sed -e 's/tel:\(.*\);/' file.txt
但我得到整个file.txt?
答案 0 :(得分:3)
您可以简单地使用grep而不是sed
。我选择grep
的原因意味着,grep是一个工具,可以在一个单独的行中打印每个匹配。
grep -oP 'tel:\K.*?(?=;)' file.txt
正则表达式:
tel: 'tel:'
\K '\K' (resets the starting point of the
reported match)
.*? matches any character except \n (0 or more times) non-greedily
(?= look ahead to see if there is:
; ';'
) end of look-ahead
<强>更新强>
$ cat file
tel:02134343, 3646848393; tel:02134343;
tel:02134344;
$ grep -oP '(?:tel:|(?<!^)\G)\K\d*(?=[^;\n]*;)' file
02134343
3646848393
02134343
02134344
答案 1 :(得分:0)
这是另一种在特殊格式的情况下显示电话号码的解决方案
grep -Po 'tel:\d{3}[\s\-_]?\d{3}[\s\-_]?\d{4}' file.txt|cut -f2 -d':'
它将提取格式化的数字,如下所示
***-*******
**********
*** *******
***-***-****