我需要使用SED来替换第三组括号中的值

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

所以我仍然是使用Bash /脚本的菜鸟。我正在一个项目中,该项目将自动执行抓取帐户密钥并将其放置在SQL查询行的特定括号内的过程,该行将存储在单独的文本文件中。我已经确定了到目前为止所需的内容,但是不确定如何替换特定括号的值。

以下是示例查询:

SELECT NOW(),COUNT (*) FROM ACCT_HIST WHERE ACCT_KEY IN (1010000) AND REC_ACTV_IND = 'Y' AND DT_KEY < 20191009;

因此,我只想替换“ ACCT_KEY IN”之后的括号值。我该怎么办?

我得到了使用类似以下内容替换括号中的值的要点:

"sed "s/([^)]*)/()/g" filename 

但是我不确定如何避免在所有括号中替换数据。任何帮助表示赞赏。

bash shell sed scripting
1个回答
0
投票

([^)]*)替换第三次出现的()

sed "s/([^)]*)/()/3"

例如:

$ sed "s/([^)]*)/()/3" <<< "(1) (2) (3) (4);"
(1) (2) () (4);

替换最后一次出现:

$ sed "s/\(.*\)([^)]*)/\1()/" <<< "(1) (2) (3) (4) etc;"
(1) (2) (3) () etc;
© www.soinside.com 2019 - 2024. All rights reserved.