我的数据类似于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条记录。
答案 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