从Excel或带有特定区号的txt文件中获取Grep记录


0

当我想要所有年份日期为2018年的记录时,我知道如何通过使用下面代码之类的东西来拉动文本文件中的某些记录。下面是我正在处理的示例记录,现在我需要代码来提取特定区域来自文件中数千个10位数电话号码列表的代码。我实际上必须拉几个区号,所以如果可以一次完成所有,那就太棒了。这是我用于年份的代码:

grep 2018-01 mca159.182.txt 

虽然上面的工作,它不会将这些记录提取到文件,即使我把-o和文件名我希望它创建并放入记录。它仍然只显示2018终端中的所有结果,其中我别无选择,只能复制和粘贴。所以这个提示也会有用,为了让我把结果放到一个新的文本文件中。这是我正在处理的文件格式如下:

phone       dob     size
9546022996  8/7/17  199000
9123842128  8/7/17  199000

所以说我想提取所有10位数的电话号码或实际上整个记录是我想要的,这意味着三列将被导出到一个新文件或至少在屏幕上,对于所有以954,213,909开头的数字。所以,如果工作,那么它会发现上面的第一条记录为匹配。


迈克,不知怎的,我已经修改了这个问题。我认为你更好地参考链接superuser.com/help/how-to-ask。实际上这个查询属于UNIX,因此我添加了一个新标记。
Rajesh S

Answers:


0

这里有两个问题:

1)如何将grep的输出发送到文件,而不是终端屏幕?

grep的-o选项只显示任何行的匹配部分。你可能正在考虑这个问题吗?

grep 2018-01 mca159.182.txt > newfile.txt

将任何匹配的行发送到newfile.txt。

2)如何使用grep匹配文件中的前三个字符,以获得多种可能的匹配?

grep -E "^954|^213|^909" mca159.182.txt > newfile.txt

我们必须使用-E(或使用命令egrep)指定扩展正则表达式才能使用| 符号(在grep手册中称为交替运算符)。“^”字符是一个锚点,意味着只匹配三个字符位于行首的位置。


好的,谢谢你,我把它放在我的终端,它确实创建了文件
mike m

grep -E“^ 213 | ^ 215 | ^ 213 | ^ 570 | ^ 610 | ^ 215 | ^ 302 | ^ 609 | ^ 856 | ^ 732 | ^ 717 | ^ 848”dentest.txt> dentestdone.txt
mike m

它创建了dentestdone.txt但没有内容,我知道在dentest.txt中有一个215区域代码,所以不确定为什么dentestdone.txt是空的?终端没有错误。让我知道我做错了什么?
迈克

尝试使用该文件的一小段 - 用“head -10 dentest.txt> den10.txt”抓住前10行并尝试使用它。您使用的是什么样的O / S或grep版本?
Ian McGowan

以下是响应和使用的确切代码:不确定此响应的含义是什么?也许它在前十行中找不到匹配?
迈克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.