![Grep 在文件中查找电话号码](https://linux22.com/image/39759/Grep%20%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9F%A5%E6%89%BE%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81.png)
我如何在/etc
目录(但不是子目录)中查找包含标准美国长途电话号码的文件,使用 的模式编写1-###-###-####
,其中每个文件#
都替换为数字。收集目录中包含这种数字模式的每个文件的文件名/etc
,并将它们放入 file 中~/etcphone.txt
,每行一个文件名,使用绝对引用按字母顺序排序。
这就是我到目前为止所拥有的
egrep -l "1-[[:digit:]]{3}- " /etc/* 2>/dev/null
答案1
$ egrep -l "\b1-[[:digit:]]{3}-[[:digit:]]{3}-[[:digit:]]{4}\b" \
/etc/* 2>/dev/null | sort > ~/etcphone.txt
转义\b
序列与字边界匹配。这将阻止 if 匹配诸如 之类的东西1231-123-123-1234
。
答案2
egrep -l "1(-[[:digit:]]{3}){3}[[:digit:]]" /etc/* 2>/dev/null
答案3
find /etc | xargs -I{} grep -l ‘1-[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}’ {} | sort -nr > ~/etcphone.txt
答案4
cat filename.txt | grep '^[789][0-9]{9}'
此命令仅适用于以 7,8 或 9 开头的 10 位印度手机号码。