Text-Processing

使用 cut 或 awk 選擇可讀文件的一部分

  • October 20, 2020

我創建了一個文件,其中包含人名和許多其他資訊,例如電話號碼和地址。我想知道如何只選擇該列表中所有人的姓名。

請注意,該列表中沒有列,一個人可以有多個名字(我的意思不僅是名字和姓氏,還有中間名)。每一行的格式如下:

student number,,,Name_of_student,,,address

例如:

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

輸出應該是:

John Liam Anderson 
Mary Reynold 

您的數據似乎採用逗號分隔值 (CSV) 格式。

只要您的 CSV 文件是“簡單”的,即逗號分隔的欄位都不包含帶逗號的字元串,並且名稱始終在欄位 4 中,如您的範例輸入所暗示的那樣,以下awk使用,as 欄位分隔符的腳本就可以了:

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

如果欄位值可以包含,(例如,如果它的名稱John Liam Anderson, jr.),那麼這種幼稚的方法就不再適用了。由於沒有定義 CSV 格式的“權威”標準(儘管開源軟體可能遵守RFC4180)這一事實更加嚴重,因此對此類字元串的處理取決於“欄位值逗號”的轉義方式.

引用自:https://unix.stackexchange.com/questions/615231