Chinaunix
标题:
请教关于sed替换的问题
[打印本页]
作者:
wzabcd1234
时间:
2016-08-25 16:38
标题:
请教关于sed替换的问题
文本如下:
INSERT INTO table_a VALUES ('a', 'b'), ('c', 'd');
替换后的结果:
INSERT INTO table_a VALUES ('a', 'b');INSERT INTO table_a VALUES ('c', 'd');
也就是把一行中的),(都替换为起始的INSERT XXX,sed命令用的不熟悉,请教有什么好方法,谢谢啊。
作者:
拖拉机商人
时间:
2016-08-25 16:59
sed 's#),(#)INSERT INTO table_a(#g' yourfile
作者:
moperyblue
时间:
2016-08-25 17:03
echo "INSERT INTO table_a VALUES ('a', 'b'), ('c', 'd'), ('e', 'f');"|sed -r 's/\), \(/)<(/g;:a;s/(.*VALUES )([^<]*)</\1\2;\n\1/M;ta'
复制代码
INSERT INTO table_a VALUES ('a', 'b');
INSERT INTO table_a VALUES ('c', 'd');
INSERT INTO table_a VALUES ('e', 'f');
作者:
wzabcd1234
时间:
2016-08-25 17:04
回复
2#
拖拉机商人
您好,是我没有说清楚。。。
文本是有很多行的,比如:
INSERT INTO table_a VALUES ('a', 'b'), ('c', 'd');
INSERT INTO table_b VALUES ('a1', 'b'), ('c1', 'd');
INSERT INTO table_c VALUES ('a2', 'b'), ('c2', 'd');
最终替换的结果是:
INSERT INTO table_a VALUES ('a', 'b'); INSERT INTO table_a VALUES ('c', 'd');
INSERT INTO table_b VALUES ('a1', 'b'); INSERT INTO table_b VALUES ('c1', 'd');
INSERT INTO table_c VALUES ('a2', 'b'); INSERT INTO table_c VALUES ('c2', 'd');
作者:
拖拉机商人
时间:
2016-08-25 17:46
本帖最后由 拖拉机商人 于 2016-08-25 17:47 编辑
理解错了,table有规则么?
作者:
zxy877298415
时间:
2016-08-25 18:01
awk -F \( 'gsub("),",");"$1,$0)' OFS="(" file
复制代码
回复
1#
wzabcd1234
作者:
杰瑞26
时间:
2016-08-25 18:37
root@localhost:~# str="INSERT INTO table_a VALUES ('a', 'b'), ('c', 'd');"
root@localhost:~# echo $str | sed -e 's:),:);INSERT INTO table_a VALUES :'
INSERT INTO table_a VALUES ('a', 'b');INSERT INTO table_a VALUES ('c', 'd');
复制代码
作者:
moperyblue
时间:
2016-08-25 19:34
sed -r 's/\), \(/)<(/g;:a;s/([^(]*)([^<]*)</\1\2;\n\1/M;ta;s/\n//g'
复制代码
作者:
blind_fish
时间:
2016-08-25 20:52
本帖最后由 blind_fish 于 2016-08-25 20:54 编辑
[root@CentOS6min ~]# cat c.txt
INSERT INTO table_a VALUES ('a', 'b'), ('c', 'd');
INSERT INTO table_b VALUES ('a1', 'b'), ('c1', 'd');
INSERT INTO table_c VALUES ('a2', 'b'), ('c2', 'd');
[root@CentOS6min ~]#sed -nr "s@^([^\(]+)(.*)\,(.*,.*)@\1\2;\1\3@p" c.txt
INSERT INTO table_a VALUES ('a', 'b');INSERT INTO table_a VALUES ('c', 'd');
INSERT INTO table_b VALUES ('a1', 'b');INSERT INTO table_b VALUES ('c1', 'd');
INSERT INTO table_c VALUES ('a2', 'b');INSERT INTO table_c VALUES ('c2', 'd');
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2