我正在使用一个巨大的制表符分隔文件,我试图根据第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行作为“car”,虽然我之前知道(从excel中查看文件)超过1500行的col45
为car
。< / p>
知道这里发生了什么吗?
谢谢!
答案 0 :(得分: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美元,而且我认为你想要以汽车开头的东西,而不是“完全等于”汽车。)
答案 1 :(得分:0)
另一个备选方案:
cut -f45 < file | grep -c '^car' #OR
cut -f45 < file | grep -c -i '^car'
即使有一个空单元也应该有效。