我创建了一个包含人名和许多其他内容(例如电话号码和地址)的文件。我想知道如何才能只选择该列表中所有人员的姓名。
请注意,该列表中没有列,一个人可以有多个名字(我的意思不仅是名字和姓氏,还包括中间名)。每行的格式如下:
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),因此此类字符串的处理取决于“字段值逗号”的转义方式。