Text-Processing
使用 cut 或 awk 選擇可讀文件的一部分
我創建了一個文件,其中包含人名和許多其他資訊,例如電話號碼和地址。我想知道如何只選擇該列表中所有人的姓名。
請注意,該列表中沒有列,一個人可以有多個名字(我的意思不僅是名字和姓氏,還有中間名)。每一行的格式如下:
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)這一事實更加嚴重,因此對此類字元串的處理取決於“欄位值逗號”的轉義方式.