【发布时间】:2014-09-22 09:46:58
【问题描述】:
我有一个尝试使用 AWK 操作的 SQL 文件。我有以下行在VALUES 上拆分我的SQL 文件,因为我想以不同的方式处理该字段之前和之后的文本。
原始文件如下所示:
INSERT INTO `drt_mig_user`.`parametric_object`(`id`, `active`, `priority`, `createdatetime`, `lastupdatedatetime`, `discriminator`) VALUES ('10085', '1', NULL, '2014-09-19 16:18:39', '2014-09-19 16:18:39', 'gate')
我的 AWK 代码:
cat file.txt | awk -F'VALUES' '{printf("$this->addSql(\"%sVALUES%s\");\n", $1, $2)}'
产生这个:
$this->addSql("INSERT INTO `drt_mig_user`.`parametric_object`(`id`, `active`, `priority`, `createdatetime`, `lastupdatedatetime`, `discriminator`) VALUES ('10085', '1', NULL, '2014-09-19 16:18:39', '2014-09-19 16:18:39', 'gate') ");
现在我需要做的就是删除 drt_mig_user 并从整个第一个变量 $1 周围删除反引号,使其看起来像这样:
$this->addSql("INSERT INTO parametric_object(id, active, priority, createdatetime, lastupdatedatetime, discriminator) VALUES ('10085', '1', NULL, '2014-09-19 16:18:39', '2014-09-19 16:18:39', 'gate') ");
有没有办法像这样以不同的方式操作变量?
【问题讨论】:
-
第一个变量中没有单引号 (
'),而是有反引号 (`)。尽管您确实说过您的实际输入looks something like this所以这是您发布的示例输入实际上不是您的真实输入的一种方式吗?请发布在所有重要方面与您的真实输入完全相同的示例输入。 -
你说的很对,我现在就编辑答案和问题
标签: linux awk text-manipulation