Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Sed向MySQLdump添加引号_Mysql_Regex_Sed - Fatal编程技术网

使用Sed向MySQLdump添加引号

使用Sed向MySQLdump添加引号,mysql,regex,sed,Mysql,Regex,Sed,我试图使用sed在mysql转储中添加十进制值周围的引号。行的格式如下: INSERT INTO .... 'LastName', 1356.183); 我试图将最后一个值(在本例中为1356.183)封装在引号中,这将导致以下结果: INSERT INTO .... 'LastName', '1356.183'); 到目前为止,我尝试了以下sed命令的变体,但没有成功: sed -i '.bak' "s/, \(\d+.\d+\))/, '\1')/g" test.txt 对于我应该使用

我试图使用sed在mysql转储中添加十进制值周围的引号。行的格式如下:

INSERT INTO .... 'LastName', 1356.183);
我试图将最后一个值(在本例中为1356.183)封装在引号中,这将导致以下结果:

INSERT INTO .... 'LastName', '1356.183');
到目前为止,我尝试了以下sed命令的变体,但没有成功:

sed -i '.bak' "s/, \(\d+.\d+\))/, '\1')/g" test.txt

对于我应该使用的正则表达式有什么建议吗?谢谢大家!

很少有工具会将
\d
识别为代表一个数字,
+
是一个ERE元字符,而不是sed默认支持的BRE。只需使用
[0-9]
而不是
\d
,并转义
+
即可将其作为POSIX sed中的ERE元字符激活:

$ sed 's/[0-9]\+\.[0-9]\+/'\''&'\''/' file
INSERT INTO .... 'LastName', '1356.183');

我还转义了
以停用它的元字符属性,并修复了您的引用(为了避免意外后果,切勿在任何脚本周围使用双引号-始终使用单引号,并仅在需要外壳能够扩展的任何部分周围终止它们,例如,您应该执行
sed's/''$var'/whatever/'
,而不是
sed“s/$var/whatever/”
).

尝试使用
sed-i.bak''s/\(\d+。\d+\)/'\1'/g”test.txt
为什么需要引用数字?插入
无论是否使用引号都可以正常工作。