本帖最后由 summersunboy 于 2010-06-12 10:04 编辑
原文件(2.txt)是这样的:- ,0,好,a
- ,1,好,b
- ,2,学,c
- ,3,习,d
- ,4,天,e
- ,5,天,f
- ,6,向,g
- ,7,上,h
复制代码 处理后要达到的效果是这样:- INSERT (0,"好",a");
- INSERT (1,"好",b");
- INSERT (2,"学","c");
- INSERT (3,"习","d");
- INSERT (4,"天",e");
- INSERT (5,"天",f");
- INSERT (6,"向",g");
- INSERT (7,"上",h);
复制代码 我编写的脚本如下:- #!/bin/bash
- processTxt()
- {
- #匹配,开头的行
- #将第一个 , 替换成 INSERT (
- #并在结尾补上 );
- #将第二个 , 替换成 ,"
- #将第三个 , 替换成 "," ## 我这儿遇到问题了
- #我在区分 第二个与第三个, 时是以 ,前的字符不为数字区分的
- #可是有的字符成功匹配 有的不成功
- sed -i "/^,/{
- s/^,/INSERT \(/
- s/\r/\"\);\r/
- s/,/,\"/
- s/\([^\x30-\x39]\),/\1\",\"/
- }" $1
- # s/\([^0-9]\),/\1\",\"/
- }
- #开始处理
- rm -rf 1.txt
- cp 2.txt 1.txt
- echo "process 1.txt"
- processTxt 1.txt
- echo "end process"
复制代码 处理后的结果(1.txt)有的匹配成功有的不成功:- INSERT (0,"好,a");
- INSERT (1,"好,b");
- INSERT (2,"学","c");
- INSERT (3,"习","d");
- INSERT (4,"天,e");
- INSERT (5,"天,f");
- INSERT (6,"向,g");
- INSERT (7,"上,h);
复制代码 只有 学 和 习 这两个匹配成功了,其它的都不行,这是为什么呢?恳请各位前辈多多指教,先谢过各位了! |