找到另一个文本后替换同一行上的文本

问题描述 投票:0回答:1

我有一个具有以下大致结构的 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
sed
1个回答
0
投票

您想要将条件包含在替换正则表达式中。

顺便说一句,你尝试中的大括号是不必要的。另外,在你有一个可以工作的脚本之前,可能不要使用

-i

sed  -i "s/\(_binary.*\)',/\1'),/}" file
© www.soinside.com 2019 - 2024. All rights reserved.