如何用AWK解析tsv文件

时间:2018-03-07 09:35:10

标签: csv awk

我需要使用awk解析,迭代.tsv文件。

文件路径正确,在终端测试。 收到错误“ cat:./ datalist.tsv没有这样的文件或目录

tsv文件有几行,标签分隔。计划是循环遍历tsv文件内容。

这是我的代码, filename.awk

2 个答案:

答案 0 :(得分:1)

您不必使用#!/bin/gawk BEGIN { FS = "\t" OFS = "," ORS = "\r\n" while (( getline < "datalist.tsv" ) > 0) { print $1,$2,$3 } } 来读取TSV文件。相反,只需直接读取文件即可。

例如:

1   2   3
ab  bc  cd
abc bcd cde

示例输入(字段之间的所有空格只是一个标签):

1,2,3
ab,bc,cd
abc,bcd,cde

示例输出:

FS="\t"

注意:如果TSV文件中的字段中没有空格,就像在我的示例输入中一样,您甚至不需要更改字段分隔符SSL_CTX_set1_verify_cert_store,因为字段将在空格中分割为以及默认情况下的标签。

答案 1 :(得分:0)

你的事情太复杂了。为什么要在BEGIN块中进行读取?为什么要将OFS设置为除了您显然想要的输出分隔符之外的其他内容?

awk 'BEGIN { FS="\t"; OFS="_"; ORS="\"\r\n" } { print $1, $2, $3 }' ./datalist.tsv

如果文件正确 TSV,您可能需要解决一些问题。格式允许字段包含分隔符,如果它在双引号内;显然,您正在阅读的文件有双引号(为什么还要将"放在ORS中?所以完整的解决方案会解析引号并忽略该字段分隔符,如果它在一对(未转义的!)引号内。 (参见例如this question.)