使用 cut 或 awk 选择可读文件的部分

使用 cut 或 awk 选择可读文件的部分

我创建了一个包含人名和许多其他内容(例如电话号码和地址)的文件。我想知道如何才能只选择该列表中所有人员的姓名。

请注意,该列表中没有列,一个人可以有多个名字(我的意思不仅是名字和姓氏,还包括中间名)。每行的格式如下:

student number,,,Name_of_student,,,address

例如:

a684932,,,John Liam Anderson,,,Kentucky
a683910,,,Mary Reynold,,,Michigan
...
...

输出应该是:

John Liam Anderson 
Mary Reynold 

答案1

您的数据似乎采用逗号分隔值 (CSV) 格式。

只要您的 CSV 文件是“简单”的,即所有逗号分隔字段都不包含带逗号的字符串,并且名称始终位于字段 4 中(如您的示例输入所示),则awk使用,as 字段分隔符的以下脚本即可:

awk -F',' '{print $4}' file.txt

如果字段值可以包含,(例如,如果名称为 it John Liam Anderson, jr.),则这种幼稚的方法不再起作用。由于没有定义 CSV 格式的“权威”标准(尽管开源软件很可能遵循RFC4180),因此此类字符串的处理取决于“字段值逗号”的转义方式。

相关内容