我有一个由MS Excel生成的CSV文件。在原始电子表格中存在合并单元格的情况下,包含这些单元格的原始行在CSV输出中变为多行。我想将这些加入一行。
我正在寻找一个Unix(Solaris 10)工具(sed / awk / tr等),它将所有不以逗号结尾的行连接到下一行,同时保留以逗号结尾的所有行不受影响。不以逗号结尾的行尾的换行符将替换为空格。
E.g。如果输入文件包含:
,Dilbert,
,,Wally,
Alice,
Asok9
Dogbert:
Catbert,
Ratbert,
然后结果输出为:
,Dilbert,
,,Wally,
Alice,
Asok9 Dogbert: Catbert,
Ratbert,
感谢。
答案 0 :(得分:3)
你走了:
awk '{printf "%s"(/,$/?RS:FS),$0}' file
,Dilbert,
,,Wally,
Alice,
Asok9 Dogbert: Catbert,
Ratbert,
如果行以,
结尾,请使用RS
(记录选择器是默认的新行)
如果不是,请使用FS
(字段分隔符是默认的一个空格)
答案 1 :(得分:2)
sed ':a
/,$/ b
$ b
N;s/\n/ /;b a' YourFile
与sed相同的技巧,如果存在某些尾随空格,请/,$/
更改/, *$/