我正在使用一个巨大的制表符分隔文件,我试图根据第 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
。
知道这里发生了什么吗?
谢谢!
最佳答案
这似乎在 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 美元,并且我假设您想要的是以 car 开始的东西,而不是“完全等于”car。)
关于linux - awk 在 linux 中子集化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494048/