我有一个很大的csv文件,其中包含如下段落:
first line1
second line1
third line1
fourth line1
first line2
second line2
third line2
fourth line2
处理后,我想翻译成:
first line1,second line1,third line1,fourth line1
first line2,second line2,third line2,fourth line2
注:第一行、第二行等包含特殊字符,如。,“:
我认为一种选择是从第二行1中找到“second”单词,并用逗号替换前面的“enter”,这样第二行1将位于第一行1的右侧。
我该怎么做?
事实上,上面的例子很可能不是真实的数据,这里是:
137822118,user,User,192.168.100.20,2016-07-25 23:19:05 DST,iScript,iScript send MML command,B12345-BXL_ABCD_BD,Succeeded,"NE Name:B12345-BXL_ABCD_BD
MML Command:LST DEVIP:OPONEMS=""user"", IPOFEMSWS=""192.168.100.20"";
MML Result:Successful.
",2016-07-25 23:19:05 DST
137821234,user,User,192.168.100.21,2016-07-25 23:19:05 DST,iScript,iScript send MML command,B12345-BXL_ASDF_BD,Succeeded,"NE Name:B12345-BXL_ASDF_BD
MML Command:LST DEVIP:OPONEMS=""user"", IPOFEMSWS=""192.168.100.21"";
MML Result:Successful.
",2016-07-25 22:18:05 DST
csv文件包含许多此类段落。
输出应为(一行一段):
137822118,user,User,192.168.100.20,2016-07-25 23:19:05 DST,iScript,iScript send MML command,B12345-BXL_ABCD_BD,Succeeded,"NE Name:B12345-BXL_ABCD_BD,MML Command:LST DEVIP:OPONEMS=""user"", IPOFEMSWS=""192.168.100.20""; MML Result:Successful. ",2016-07-25 23:19:05 DST
137821234,user,User,192.168.100.21,2016-07-25 23:19:05 DST,iScript,iScript send MML command,B12345-BXL_ASDF_BD,Succeeded,"NE Name:B12345-BXL_ASDF_BD,MML Command:LST DEVIP:OPONEMS=""user"", IPOFEMSWS=""192.168.100.21""; MML Result:Successful. ",2016-07-25 22:18:05 DST
非常感谢你的帮助!
我试过你的解决方案,几乎成功了,但不是预期的结果。
我给你的例子似乎与源文件略有不同,因为这里的发布格式。
请在下面找到真正的源csv文件(只有几行,因为完整的文件包含超过一百万个)
https://www.wetransfer.com/downloads/637b36b2148550ad090c22c9e8297a9c20160804081835/48b90b
对不起,误会了,再次感谢!
最佳答案
另一种选择
$ awk '{ORS=NR%4?",":RS}1' file
每四行重置输出记录分隔符并打印。
关于linux - bash在给定模式之前查找并用逗号替换“enter”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38745357/