gpt4 book ai didi

mysql - 使用 Grep 在每行循环中创建多个变量 - BASH

转载 作者:行者123 更新时间:2023-11-29 10:36:07 26 4
gpt4 key购买 nike

我正在尝试获取上述格式的多行文件并从中创建 MySQL 插入语句。最终结果目标类似于输出: -

insert into ansible_db (ip, version) values ("$ip", "$version") 

以下每个数据示例的每行(这是输入文件,我想要 IP 地址和 msg 段的结果 - 即 4.0.3): -

ok: [192.168.0.214] => {s    "msg": "4.0.3"s}
ok: [192.168.0.210] => {s "msg": "4.0.8"s}
ok: [192.168.0.208] => {s "msg": "fdsajkghjfdka"s}
ok: [192.168.0.216] => {s "msg": "Potatoes""""s}

以下 grep 正确获取 IP 和消息:-

$ip=grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' 
$version= grep -oP '(?<=\"\: \").*(?=\"s})' #format of the message will vary going forward.

我想把它放在一个循环中,但我很挣扎。任何建议表示赞赏。

最佳答案

在这种情况下,不需要 while 循环。如果您的文件具有与您在问题中提供的一致结构,则以下命令应打印所需的行。

awk -v FS='[][]|"' '{print "insert into ansible_db (ip, version) values ( \""$2 "\" , \""$6"\" )" }' yourInputFile

请注意,上面的命令将在 std out 中显示结果,如果您想执行,可以在命令末尾使用 |bash ,例如:

awk -v FS='[][]|"' '{print "insert into ansible_db (ip, version) values ( "$2 " , "$6" )" }' yourInputFile |bash

关于mysql - 使用 Grep 在每行循环中创建多个变量 - BASH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404437/

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