使用grep命令匹配特定列

时间:2014-12-09 22:44:01

标签: linux grep match

我在使用grep命令匹配特定列时遇到问题。我有一个像这样的测试文件(test.txt)..

Bra001325       835     T       13      c$c$c$c$c$cccccCcc      !!!!!68886676
Bra001325       836     C       8       ,,,,,.,,        68886676
Bra001325       841     A       6       ,$,.,,. BJJJJE
Bra001325       866     C       2       ,.      HJ

我想在第二列中提取所有具有数字866的行。当我使用grep命令时,我得到包含数字

的所有行
grep "866" test.txt

Bra001325       835     T       13      c$c$c$c$c$cccccCcc      !!!!!68886676
Bra001325       836     C       8       ,,,,,.,,        68886676
Bra001325       866     C       2       ,.      HJ

如何使用grep命令匹配特定列?

2 个答案:

答案 0 :(得分:13)

尝试这样做:

$ awk '$2 == 866' test.txt

无需添加{print}awk的默认行为是在true条件下打印。

$ grep -P '^\S+\s+866\b' *

但是也可以打印文件名&比强大得多:

$ awk '$2 == 866{print FILENAME":"$0; nextfile}' *

答案 1 :(得分:1)

在我的情况下,字段分隔符不是空格而是逗号。因此,我必须添加它,否则它对我不起作用(在ubuntu 18.04.1上)。

awk -F ', ' '$2 == 866' test.txt