删除csv文件中的自动换行 - Linux

时间:2016-07-11 06:37:10

标签: linux bash csv awk word-wrap

我的数据类似于users.csv文件[Linux环境]中显示的单个记录:

"1583787721","tusharmisra","tushar.misra@example.com","","","Ok
","https://www.yammer.com/api/v1/users/1583787721","","","2016-005T11:20:08.942Z","","","","","","active"

这里我如何使用bash脚本删除CSV文件中的自动换行(换行?)。我在users.csv中至少有1000条记录。

3 个答案:

答案 0 :(得分:0)

您可以试试awk

awk -F, 'NF!=16&&!line{line=$0;next} NF!=16&&line{line=line $0} {n=split(line, a, ",")} n==16{print line;line=""}' file.csv

答案 1 :(得分:0)

$ gsed '/,"[^"][^"]*$/{N;s/\n//}' data.in >data.new

此GNU sed脚本将从文件data.in中读取并查找以,"XXX结尾的任何行,其中XXX可以是不包含{{1}的任何字符串字符。这表示包裹的行(在您提供的样本中)。

当找到这样的行时,下一行输入被附加到它,并且连接行中的任何换行都被删除。

输出结果行,以及任何未修改的行。

输出存储在"

答案 2 :(得分:0)

根据固定的#字段,您可以使用此awk:

awk -F '"[^"]+"' 'NF<15{s = s $0; next} s{print s; s=""} 1; END{if (s) print s}' file
相关问题