我有一个具有以下大致结构的 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
之后第一次出现。
我想出了这个表达式,它适用于前两行,但不适用于第三行,因为它替换了我要替换的第一次出现的内容,无论单词
_binary
的位置如何。
sed -i "/_binary/{s/',/'),/}" file
您想要将条件包含在替换正则表达式中。
顺便说一句,你尝试中的大括号是不必要的。另外,在你有一个可以工作的脚本之前,可能不要使用
-i
。
sed -i "s/\(_binary.*\)',/\1'),/}" file