Grep

Grep

所以,我的问题是,我有一个包含很多名字的文件,我想使用命令提取信息。我想要一些以特定姓氏开头的名字,例如“d”。这是一个非常大的列表,我想简化工作。

答案1

使用您给出的示例,首先我们需要从网页。我复制了第一个表格,将其粘贴到电子表格(我的情况是 LibreCalc),然后将其导出为csv文件 list.csv。生成的文件如下所示:

1921,2:47:29.8,Florestano Benedetti (ITA),1921-09-20,Bologna,Italy
1922,2:46:26,Gabriel Ruotsalainen (FIN),1922-09-10,Helsinki,Finland
1923,2:40:47,Aksel Jensen (DEN),1923-06-16,Windsor,England
1924,2:36:10,Shizo Kanaguri (JPN),1924-04-12,Tokyo,Japan
...

然后我们可以使用grepsedawk或其他任何方式来处理文件。例如,使用awk

$ cat list.csv | awk -F, '$3 !~ /[Dd]/ { print; }'
1921,2:47:29.8,Florestano Benedetti (ITA),1921-09-20,Bologna,Italy
1923,2:40:47,Aksel Jensen (DEN),1923-06-16,Windsor,England
1937,2:30:38,Manuel Dias (POR),1937-03-28,Lisbon,Portugal
1938,2:30:27.6,Pat Dengis (USA),1938-05-30,Salisbury,Massachusetts,USA
...

这将打印出名称(第三列,因此$3)不包含 aD或 的任何行d。有关更多详细信息,请参阅awksed或手册页。grep

答案2

Grep

Grep,在输入文件中搜索包含与给定模式列表匹配的行。

当它在某一行中找到匹配项时,它会默认将该行复制到标准输出,或者执行您使用选项请求的任何其他类型的输出。

可以简单地调用 Grep:

grep <string> filename

Grep 可以搜索复杂的模式来找到您需要的内容。

以下是用于创建正则表达式的一些特殊字符的列表:

. The period . matches any single character.
? The preceding item is optional and will be matched at most once.
* The preceding item will be matched zero or more times.
+ The preceding item will be matched one or more times.   

欲了解更多详情,请查看: man grep

相关内容