bash - 我需要帮助使用 SED 替换第三组括号中的值
问题描述
所以我仍然是 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
但我不确定如何避免替换所有括号中的数据。任何帮助表示赞赏。
解决方案
用 替换第三次([^)]*)
出现()
:
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;
推荐阅读
- angular - 如何在组件之间与 @input/@output 共享数据?
- python - Pyspark 检查是否有任何行大于零
- javascript - Issue regarding logging the pose object in posenet of tensorflow.js
- php - 如何修改进度条的最大值
- javascript - Redux、localStorage 和 React:刷新页面时出错
- mongodb - 我如何在 mongodb 中使用它的“键”过滤地图
- javascript - 试图在谷歌表上添加带有时间戳的列
- docker - 在 Docker 项目中更改 gem fork 会导致 GitHub CI 测试失败
- javascript - 在 Jest 上选择性地模拟一个函数
- javascript - 有没有办法隐藏确认框而不带标题