加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 在Linux中移动csv文件的换行问题

发布时间:2020-12-14 06:30:58 所属栏目:百科 来源:网络整理
导读:[我已经将csv文件移动到具有二进制模式的Linux系统中.一个字段的文件内容将多个行吐出其注释部分,我需要删除新行,保持相同的格式,请帮助shell命令或perl命令 这里是三个记录的例子,实际看起来像] Original content of the file [移入linux后,注释字段被分成4
[我已经将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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读