【发布时间】:2019-01-10 04:44:48
【问题描述】:
我目前正在处理一个相当大的 csv 文件,它有 170 列。我想使用awk 过滤过滤掉三个特定列,然后将该文件导出,以便导出的文件仅包含 170 列中的 3 个。
gzcat filename.csv.gz | awk '$19=="ACCOUNT_MOBILE_NUMBER" || $26=="DEVICE_ADID_TYPE" || $27=="DEVICE_ADID"' | gzip > filename_FILTERED.csv.gz
预期结果:新导出的文件仅包含这三列及其对应的值/行
到目前为止的实际结果:新导出的文件是空白的
【问题讨论】:
-
您需要提供来自
filename.csv.gz的输入文件的小sn-p -
这是一个 csv...所以它是逗号分隔的,不是吗?使用
-F,标志再次尝试您的awk。 -
另一种方式:
gunzip | cut -
您的脚本会在相应列中查找包含这些值之一的行(如果找到,则会打印所有列)。显然,该文件不包含任何具有这些值的行。