- 论坛徽章:
- 0
|
本帖最后由 xylcxyfc 于 2015-01-27 17:17 编辑
大家好!
现需要每天用shell自动处理某文件夹内上百个数据文件,其主要内容是把数据文件内的 不与逗号、行首、行尾相连的单个双引号替换为两个双引号 ,在shell里面怎么做啊。
文本内容摘抄一行举例:
"03501001 ",181884,"2013-07-05","",0,"Yan Lin "Anita" Lis, tuition fees","(JW) "
为了不影响复制,还是在下面上颜色吧,这段文本中只需要把
"03501001 ",181884,"2013-07-05","",0,"Yan Lin "Anita" Lis, tuition fees","(JW) "
其中标注红色的两个双引号分别替换为两个双引号就可以了,变成这样:
"03501001 ",181884,"2013-07-05","",0,"Yan Lin ""Anita"" Lis, tuition fees","(JW) "
实际上在notepad++里面我已经把perl的正则写出来了:
(?<!^)(?<!,)"(?!,)(?!$)
替换为
""
但是在shell环境下只有grep自带兼容perl的命令(主要为了零宽查找),但是grep不能做替换啊
其实这些数据是为了向sqlldr导数的,源数据因为值含有奇数个引号会导致导数错误,但是该死的供数部门不肯改输出结构,不然简单多了。
先谢谢大家了! |
|