Unix 如何在.CSV文件中使用awk命令搜索结果
我有一个CDR文件(.CSV),它包含大约150列,是一个非常大的文件。我试图得到第31列应该有值“13”的输出 我正在使用以下命令进行尝试:Unix 如何在.CSV文件中使用awk命令搜索结果,unix,awk,grep,Unix,Awk,Grep,我有一个CDR文件(.CSV),它包含大约150列,是一个非常大的文件。我试图得到第31列应该有值“13”的输出 我正在使用以下命令进行尝试: awk -F',' '$31~/^13/' report_1.csv > report_2.csv 但是得到以下错误: awk: record `,1402786,535,1,47432... has too many fields record number 1` 有什么帮助吗?我建议: awk -F',' '$31 == "13"' rep
awk -F',' '$31~/^13/' report_1.csv > report_2.csv
但是得到以下错误:
awk: record `,1402786,535,1,47432... has too many fields record number 1`
有什么帮助吗?我建议:
awk -F',' '$31 == "13"' report_1.csv > report_2.csv
我建议:
awk -F',' '$31 == "13"' report_1.csv > report_2.csv
awk
的某些实现具有最大列数<例如,code>mawk。通过分配给NF
,您可以轻松测试这一点,如下所示:
$ mawk 'BEGIN{NF=32768}'
mawk: program limit exceeded: maximum number of fields size=32767
FILENAME="" FNR=0 NR=0
要解决这个问题,可以使用GNUawk,gawk
,它没有这样明确的限制
$ gawk 'BEGIN{NF=32768}'
$ gawk 'BEGIN{NF=1000000}'
嗯,它仍然受到可用内存量的限制。(但这应该允许您在普通pc上至少有数百万个字段)
PS:您可能需要安装
gawk
,当然,处理如此大的文件可能会很慢。一些awk
的实现具有最大列数<例如,code>mawk。通过分配给NF
,您可以轻松测试这一点,如下所示:
$ mawk 'BEGIN{NF=32768}'
mawk: program limit exceeded: maximum number of fields size=32767
FILENAME="" FNR=0 NR=0
要解决这个问题,可以使用GNUawk,gawk
,它没有这样明确的限制
$ gawk 'BEGIN{NF=32768}'
$ gawk 'BEGIN{NF=1000000}'
嗯,它仍然受到可用内存量的限制。(但这应该允许您在普通pc上至少有数百万个字段)
PS:您可能需要安装
gawk
,当然,处理如此大的文件可能会很慢。字段数量的限制不应低至150个,因此我猜您可能没有正确解析CSV文件
如果是特定的,不应仅在任何逗号上拆分-应避免在带引号的字段中拆分,
(“如此”
)
如果您使用的是GNUawk
,正确的CSV解析非常简单(根据@Ed Morton的说法):
或者,为了精确匹配:
awk -v FPAT='[^,]*|"[^"]+"' '$31 == "13"' file
在非GNU
awk
的情况下,请参考引用的答案以获得替代解析方法。字段数量的限制不应低至150个,因此我猜您可能没有正确解析CSV文件
如果是特定的,不应仅在任何逗号上拆分-应避免在带引号的字段中拆分,
(“如此”
)
如果您使用的是GNUawk
,正确的CSV解析非常简单(根据@Ed Morton的说法):
或者,为了精确匹配:
awk -v FPAT='[^,]*|"[^"]+"' '$31 == "13"' file
在非GNU
awk
的情况下,请参考引用的答案以获得替代的解析方法。您使用的是哪个版本的awk
?您使用的是哪个版本的awk
?谢谢……我需要询问我是否希望输出,其中第31列为“13”,第56列为“ABC”,第80列,awk命令应该是什么?只需结合以下条件:“$31==”13“&&&&$56==”ABC“&&&$80~/…/”。@User123,我看到在我回答你的评论之前,你已经在a中问过这个问题:)不管怎样,这个答案对你有帮助吗,和/或它解决了您最初遇到的问题吗?谢谢……我需要问一下,如果我想要输出,其中第31列为“13”,第56列为“ABC”,第80列,那么awk命令应该是什么?只需结合以下条件:'$31==“13”&&&$56==“ABC”&&$80~/'.@User123,在我能够回答你的评论之前,我看到你已经在a中问了这个问题:)无论如何,这个答案对你有帮助吗,和/或它解决了你最初的问题吗?