gpt4 book ai didi

linux - 使用 AWK 操作选定的变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:37 24 4
gpt4 key购买 nike

我有一个 SQL 文件,我正尝试使用 AWK 对其进行操作。我有以下行在 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') ");

有没有办法像这样以不同的方式操作变量?

最佳答案

要从您发布的输入中获得您想要的输出,只需:

$ awk -F'VALUES' '{gsub(/drt_mig_user`\.|`/,"",$1); printf("$this->addSql(\"%sVALUES%s\");\n", $1, $2);}' file
$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')");

如果 $1 中有单引号,只需将 gsub 正则表达式更改为

/drt_mig_user`\.|[\047`]/

关于linux - 使用 AWK 操作选定的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com