[我已经将csv文件移动到具有二进制模式的Linux系统中.一个字段的文件内容将多个行吐出其注释部分,我需要删除新行,保持相同的格式,请帮助shell命令或perl命令
这里是三个记录的例子,实际看起来像]
Original content of the file
[移入linux后,注释字段被分成4行,我想保持注释字段的格式相同但不想要新的行字符
“第一行
第二行
第三行
所有行格式都不应改变“
] 2
正如我在上面的评论中所说,规格并不清楚,但我怀疑这是你想要做的.这是一种使用sqlldr将数据加载到Oracle的方法,其中字段由双引号括起并包含换行符,其中记录的结尾是回车符/换行符的组合.当数据来自保存为.csv的Excel电子表格(例如,单元格包含换行符)时,可能会发生这种情况.
这是由Excel导出为.csv并在gvim中查看的数据文件,打开选项以显示控制字符.您可以将换行符视为“$”字符,并且回车符为“^ M”字符:
100,test1,"1line1$ 1line2$ 1line3"^M$ 200,test2,"2line1$ 2line2$ 2line3"^M$
使用infile选项行上的“str”子句构造这样的控制文件,以设置记录字符的结尾.它告诉sqlldr十六进制0D(回车或^ M)是记录分隔符(这样它将忽略双引号内的换行符):
LOAD DATA infile "test.dat" "str x'0D'" TRUNCATE INTO TABLE test replace fields terminated by "," optionally enclosed by '"' ( cola char,colb char,colc char )
加载后,数据看起来像这样,注释字段中的换行符(我称之为colc)保留:
sql> select * 2 from test; COLA COLB COLC -------------------- -------------------- -------------------- 100 test1 1line1 1line2 1line3 200 test2 2line1 2line2 2line3 sql>