bash - 从脚本中删除双引号
问题描述
我试图从下面的代码中删除一些双引号,但仅限于某些点。该代码保存在我试图从命令行操作的 .psql 脚本中的 Unix 机器上。我尝试了一些 sed 命令,但我正在努力隔离我想要的部分并不断丢失所有引号。我想做的是:
1 - 将所有双引号保留到 CREATE 语句的“AS SELECT”部分。括号和前面的所有内容都需要保留引号。
2 - 在 CREATE 语句的“AS SELECT”部分之后,我想去掉引号直到“;” 在包括 WHERE 子句的 CREATE 语句的末尾。
3 - 下面还有一些 COMMENT 语句,我只想删除语句“IS E'”部分之前的任何引号。这之后的任何事情都很好。
4 - 下面是我的代码示例以及它在我手动修复后的外观。任何有助于自动化并节省我的小手指的帮助都会很棒!
我的代码:
CREATE OR REPLACE VIEW "devices_loomis" ("id", "key", "signal", "status", "active", "local", "tep", "os_name", "mod_name", "mtime", "muser", "ctime", "cuser", "remark") AS SELECT "d".ID, "d".KEY, "d".SIGNAL, "d".STATUS, "d".ACTIVE, "d".LOCAL, "d".TEP, "d".OS_NAME, "d".MOD_NAME, "d".MTIME, "d".MUSER, "d".CTIME, "d".CUSER, "d".REMARK FROM DEVICES d, ATTRIBUTES a WHERE "d".ID = "a".DEV_ID AND "a".TOK_NAME='Responsible' AND "a".VALUE = 'Loomis';
COMMENT ON VIEW "DEVICES_LOOMIS" IS E'View of Loomis devices.';
COMMENT ON COLUMN "DEVICES_LOOMIS".ACTIVE IS E'Set if device "is" active.';
这些是我一直在使用的 sed 命令,但它们似乎相互覆盖。
sed '/COMMENT ON VIEW/s/"\(.*\)".*IS/\1 IS/g' it.text
sed '/COMMENT ON COLUMN/s/"\(.*\)".\(.*\).*IS/\1.\2 IS/g' it.text
sed '/CREATE OR REPLACE VIEW/s/AS SELECT.*"\(.*\)".*FROM/AS SELECT \1 FROM/g' it.text
手动修复后:
CREATE OR REPLACE VIEW "devices_loomis" ("id", "key", "signal", "status", "active", "local", "tep", "os_name", "mod_name", "mtime", "muser", "ctime", "cuser", "remark") AS SELECT d.ID, d.KEY, d.SIGNAL, d.STATUS, d.ACTIVE, d.LOCAL, d.TEP, d.OS_NAME, d.MOD_NAME, d.MTIME, d.MUSER, d.CTIME, d.CUSER, d.REMARK FROM DEVICES d, ATTRIBUTES a WHERE d.ID = a.DEV_ID AND a.TOK_NAME='Responsible' AND a.VALUE = 'Loomis';
COMMENT ON VIEW DEVICES_LOOMIS IS E'View of Loomis devices.';
COMMENT ON COLUMN DEVICES_LOOMIS.ACTIVE IS E'Set if device "is" active.';
解决方案
推荐阅读
- java - 为什么我会收到“找不到合适的驱动程序”错误?
- reactjs - 在 li 标签内反应多个标签
- image - “无法上传大于 5mb 的图像” - 使用图像魔法将图像转换为 5mg 的最大尺寸
- c++ - C++ 构造函数中的枚举
- java - 抽屉隐藏在自定义视图中
- xml - 尝试使用 JAXB 将 Double 转换为 XML 转换时如何避免指数(科学)字符串
- r - 为什么 group_by + 汇总数千个观察结果会产生 1x1 的数据框?
- google-cloud-platform - Google Cloud Run:连接两个服务
- reactjs - 如何在 react 和 bootstrap 上将模式重定向到 url?
- flutter - 为什么 GeneratedPluginRegistrant.registerWith(this) 在 Flutter MainActivity.kt 中出现错误?