提取两列并在第一列中搜索特定单词而不删除剩余的单词

时间:2016-11-24 15:58:36

标签: linux grep cut

我有一个.csv文件,其中填写了人员,他们的小组,他们居住的城市以及他们能够工作的那一天的名字,这4个信息用这个"分开:"。

例如

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

我想剪切第二列和第三列,并打印所有包含以" s"结尾的名称的行,但不删除第二列。

例如,我希望有类似的东西:

Dennis:Paris
Charles:Levallois
Hugues:Ivry

我尝试用grep和cut进行此操作,但是使用切割结束只剩下第一个。

我希望我能够让自己明白!

1 个答案:

答案 0 :(得分:0)

听起来你只需要:

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

要解决您的请求grep + cut解决方案的评论:

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

但是awk是正确的方法。