2016-11-24 38 views
0

我有一個.csv文件,裏面充滿了人物,他們的團體,他們居住的城市以及他們能夠工作的那一天,這4個信息用這個「:」分隔。提取兩列並在剩餘的第一列中搜索特定單詞而不切割剩餘的單詞

對於e.g

Dennis:GR1:Thursday:Paris 
Charles:GR3:Monday:Levallois 
Hugues:GR2:Friday:Ivry 
Michel:GR2:Tuesday:Paris 
Yann:GR1:Monday:Pantin 

我想切斷第2和第3列,並打印含有以「s」結尾的名稱的所有行,但不削減剩餘2列。

對於e.g,我想有這樣的事情:

Dennis:Paris 
Charles:Levallois 
Hugues:Ivry 

我想這跟grep和切斷,但使用切割具有隻是剩下1日結束。

我希望我能夠讓自己明白!

+0

確實,抱歉。我編輯了我的文章,並試圖使其更清楚。 – TierOne

+0

我們是否同意這樣一個事實:CSV文件是一個電子表格文件,其中包含由分隔符(通常是逗號,分號或製表符)分隔的每行的數據?對我來說是這樣。在我的情況下,數據用冒號「:」分隔。 – TierOne

+0

已經給我的文件是一個.csv文件,這就是爲什麼我說這是一個CSV文件,否則,我不會說這個。 – TierOne

回答

0

這聽起來像所有你需要的是:

$ awk 'BEGIN{FS=OFS=":"} $1~/s$/{print $1, $4}' file 
Dennis:Paris 
Charles:Levallois 
Hugues:Ivry 

爲了解決您的評論請求的grep +切割液:

$ grep -E '^[^:]+s:' file | cut -d':' -f1,4 
Dennis:Paris 
Charles:Levallois 
Hugues:Ivry 

但AWK是這樣做的正確方法。

+0

完美地工作,但是,可以使用與您給我的命令相同的輸出,而不使用awk。例如,用grep和剪切。 – TierOne

+0

好吧,我補充說,但awk真的是這類問題的正確工具。 –

+0

grep命令不適用於我,它打印的名稱不是以「s」結尾。下面是輸出 蒂博的一部分:巴尼奧萊 弗雷德裏克:巴黎 阿奈:巴尼奧萊 薩科:勒瓦盧瓦 席琳:埃夫裏 帕特里克:巴黎 巴斯蒂安:Paris.6。 Cyril:Ivry – TierOne