You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在含_binary的SQL行中替换其后方首个',为')

解决sed仅替换_binary之后首个',的问题

先看原始SQL内容:

INSERT INTO asdassd (3,_binary 'asdfsdfsdf\"/>',-1234);
INSERT INTO hfhdfghdf (1476,'ghdfsdfg','sdfgdfgsdf',-1234);
INSERT INTO retfdxfsd (1476,'xdfgthb',_binary 'nghfghgfh',-1234);

需求很明确:只在包含_binary的行里,把_binary之后出现的第一个',替换成'),。

你之前的命令sed -i "/_binary/{s/',/'),/}" file之所以失效,是因为它会直接替换整行里的第一个',,完全没考虑_binary的位置——比如第三行里_binary前面已经有一个',,就会错误替换前面的内容。

给你两个精准的解决方案:

方案1:基于_binary位置的全局捕获

sed -i "/_binary/{s/\(_binary.*\)',/\1'),/}" file

这个命令的逻辑是:

  1. 先筛选出包含_binary的行;
  2. 用\(_binary.*\)'捕获从_binary开始到目标',前的所有内容;
  3. 把捕获到的内容保留,只把后面的',替换成'),。

方案2:针对SQL字符串的精准匹配

如果你的SQL里_binary后面都是标准的'字符串'格式,用这个更稳妥:

sed -i "/_binary/{s/\(_binary '[^']*'\),/\1'),/}" file

这个写法专门匹配_binary '开头的字符串,直到遇到闭合的',然后把后面的逗号改成'),,彻底避免行内其他',的干扰,适合处理SQL这类有明确字符串格式的场景。

替换后的第三行应该变成:

INSERT INTO retfdxfsd (1476,'xdfgthb',_binary 'nghfghgfh'),-1234);

内容的提问来源于stack exchange,提问作者felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:57:13