0

我正在使用一个巨大的制表符分隔文件,我试图根据第 45 列中字符串“car”的可用性对表进行子集化。这是文件的样子

col1    col2   ...   col44    col45

JPO     JIO    ...    JKU     car
JKO     LIC    ...    YHI     car/kcar
KJG     KLE    ...    HIY     tm/car/kcar

我应用以下命令进行子集化

awk 'BEGIN{IGNORECASE=1} $45 ~ /^car$/ '  filepath | wc

我知道文件中有 90 行作为“汽车”,尽管我以前知道(通过在 excel 中查看文件)超过 1500 行有它们的col45as car.

知道这里发生了什么吗?

谢谢!

4

2 回答 2

2

这似乎在 gawk 中运行良好(我的常规 awk 没有IGNORECASE):

$ cat foo.awk
BEGIN { IGNORECASE = 1; FS = "\t"; }
$2 ~ /^car/
$ cat foo.inp
l1  notcar
l2  CAR/blah
l3  car
$ gawk -f foo.awk < foo.inp
l2  CAR/blah
l3  car
$ 

(我用了 2 美元而不是 45 美元,我假设你想要以汽车开头的东西,而不是“完全等于”汽车。)

于 2013-07-05T17:45:28.667 回答
0

另一种选择:

cut -f45 < file | grep -c '^car' #OR
cut -f45 < file | grep -c -i '^car'

即使有一个空单元格,它也应该工作。

于 2013-07-05T17:59:27.090 回答