Bash 如果字段数较少,如何在csv中连接行

Bash 如果字段数较少,如何在csv中连接行,bash,awk,sed,Bash,Awk,Sed,我有一个csv文件被破坏了。字段中有端点(linux和windows)。我知道每行的字段数,比如N。例如,对于N=5 field1,field2,field3,field4,field5 field6,field7,fie ld8,field9,field10 ... 如何连接(合并?)较小的行以形成一条规则行,其中包含N字段(假设没有其他异常)。我可以用tr-d'\r'转换窗口的结尾,但接下来要做什么。这将把虚线组合在一起,得到五个字段: cat fileName | tr -d '\r'

我有一个csv文件被破坏了。字段中有端点(linux和windows)。我知道每行的字段数,比如
N
。例如,对于N=5

field1,field2,field3,field4,field5
field6,field7,fie
ld8,field9,field10
...

如何连接(合并?)较小的行以形成一条规则行,其中包含
N
字段(假设没有其他异常)。我可以用
tr-d'\r'
转换窗口的结尾,但接下来要做什么。

这将把虚线组合在一起,得到五个字段:

cat fileName | tr -d '\r' | tr -d '\n'> newFile
$ awk -F, 'last{$0=last $0;} NF<5{last=$0;next} {print;last="";}' file
field1,field2,field3,field4,field5
field6,field7,field8,field9,field10

$awk-F,'last{$0=last$0;}NF这将把虚线分组,得到五个字段:

$ awk -F, 'last{$0=last $0;} NF<5{last=$0;next} {print;last="";}' file
field1,field2,field3,field4,field5
field6,field7,field8,field9,field10

$awk-F,'last{$0=last$0;}nf将删除所有行尾。我需要每行N个字段。有没有办法使last
tr
有条件。这将删除所有的行尾。我需要每行N个字段。有没有办法使last
tr
有条件。虽然有效,但有一个bug,它在替换后会不断向每一行添加一个旧字段。因此,在1次替换后,此后每行的字段数为+1。我想,常规情况N=5是无法正确处理的。我是在旧版本中运行代码的。这一个运行良好。工作正常,但有一个错误,它不断添加一个旧的领域,每行更换后。因此,在1次替换后,此后每行的字段数为+1。我想,常规情况N=5是无法正确处理的。我是在旧版本中运行代码的。这辆车开得很好。