我有一个巨大的csv文件,大约500Mb。字段分隔符是管道char(|)。有些行包含换行符和回车符。我需要删除它们,但我不想删除每行末尾的合法换行符。我已尝试使用sed和tr,如其他问题所示,但我最终删除了所有新行,这不是我想要的。
示例输入(|| Yes行应该连接到上一行):
21/06/2016 18:06:32|||||||||||||||||||32 Red|Jrup Vej 6|61069849
||Yes||vals
21/06/2016 18:06:32|||||||||||||||||||101 K|Ser Bevard 110|||No|
我的尝试:
sed -i 's/\r\n//g' myfile.csv
tr -d '\r' < myfile.csv
感谢您的帮助, 乔
答案 0 :(得分:1)
csv数据通常具有固定数量的列。
在你的情况下,似乎一个完整的记录有25列。基于此,您可以使用此awk命令加入损坏的记录:
awk -F '|' 'NF < 25 {getline s; $0 = $0 s} 1' file
21/06/2016 18:06:32|||||||||||||||||||32 Red|Jrup Vej 6|61069849||Yes||vals
21/06/2016 18:06:32|||||||||||||||||||101 K|Ser Bevard 110|||No|