我需要使用awk解析,迭代.tsv文件。
文件路径正确,在终端测试。 收到错误“ cat:./ datalist.tsv没有这样的文件或目录 ”
tsv文件有几行,标签分隔。计划是循环遍历tsv文件内容。
这是我的代码, filename.awk :
答案 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.)