在UNIX中搜索与特定列中的模式匹配的行

时间:2015-12-02 23:16:09

标签: unix hadoop awk sed grep

我正在使用HDFS来获取满足特定列中模式的数据,并希望它输出整行。 (期望输出700万行中约200万)

这是我的确切情况: 我希望文件中的整行显示第4列中的数据以“5”

开头

例如我的数据集:

HK|20151010|65|5005
KR|20151009|38|5092
MD|20150925|98|1943
BG|20150826|82|4892
HK|20151017|14|5002


我希望命令产生以下结果:

HK|20151010|65|5005
KR|20151009|38|5092
HK|20151017|14|5002


非常感谢你! (注意:我无法搜索整行,因为其他列中的匹配列数据将以5开头)

2 个答案:

答案 0 :(得分:3)

怎么样:

0

如果第4列始终是最后一列,则该行也应该起作用:

awk -F'|' '$4~/^5/' file

答案 1 :(得分:1)

grep 可以用一些[^ x] + x魔法来做到这一点。这是基本和扩展形式的正则表达式:

grep '^\([^|]\+|\)\{3\}5'
egrep '^([^|]+\|){3}5'