gpt4 book ai didi

jquery - 命令行查找一行并在其余文本之前和之后添加“

转载 作者:行者123 更新时间:2023-12-01 08:00:12 24 4
gpt4 key购买 nike

我有一个像这样的 JSON 文件:

{
"User Entries" : [
{
"Names" : [
"root",
"BUILTIN\\Local System"
],
"Libinfo" : {
"pw_uuid" : FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000,
"pw_dir" : "/var/root",
"pw_shell" : "/bin/sh",
"pw_name" : "root",
}
},
{
"Names" : [
"bob",
"BUILTIN\\Local System"
],
"Libinfo" : {
"pw_uuid" : FFFFEEEE-DDDD-CCCC-BBBB-AAAA11111111,
"pw_dir" : "/Users/bob",
"pw_shell" : "/bin/sh",
"pw_name" : "bob",
}
},
]
}

我想做的是,找到“pw_uuid”行并在逗号之前添加“”到该行的其余部分。例如,原行:“pw_uuid”:FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000,更改为:“pw_uuid”:“FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000”,

懂得使用 sed 就可以做到这一点,并且您提出的任何命令都值得赞赏。

背景:因为使用jq命令,它报告号码无效(FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000),实际上它们是字符串。我正在编写一个脚本来测试特定用户(上面的 bob)是否存在,如果是,则提取用户信息,例如 pw_dir 和/或 pw_uuid 等。我正在研究 jq 选项来完成此操作,如果您对此有什么想法,也请随意。谢谢,

最佳答案

像这样的东西可以做到:

sed '/pw_uuid/s/"pw_uuid" : \([A-Z0-9-]*\)/"pw_uuid" : "\1"/g' file

sed '/pw_uuid/s/\(^[^:]*\): \([A-Z0-9-]*\)/\1: "\2"/g' file

因此 /pw_uuid/ 过滤具有 pw_uuid 的行。其中,它将 block "pw_uuid": XXX 替换为 "pw_uuid": "XXX"

这是“捕获”“pw_uuid” block 和XXX block 完成的。 [A-Z0-90-]* 表示:由大写字母、数字和 - 组成的 block 。然后使用引用“捕获” block 的 \1\2 将它们打印回来。

<小时/>

要使用内容更新文件,请将 -i 添加到命令中,例如:

sed -i.bak '/pw_uuid/s/"pw_uuid" : \([A-Z0-9-]*\)/"pw_uuid" : "\1"/g' file
^^^^^^

sed -i.bak '/pw_uuid/s/\(^[^:]*\): \([A-Z0-9-]*\)/\1: "\2"/g' file
^^^^^^
<小时/>

命令的输出

{
"User Entries" : [
{
"Names" : [
"root",
"BUILTIN\\Local System"
],
"Libinfo" : {
"pw_uuid" : "FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000",
"pw_dir" : "/var/root",
"pw_shell" : "/bin/sh",
"pw_name" : "root",
}
},
{
"Names" : [
"bob",
"BUILTIN\\Local System"
],
"Libinfo" : {
"pw_uuid" : "FFFFEEEE-DDDD-CCCC-BBBB-AAAA11111111",
"pw_dir" : "/Users/bob",
"pw_shell" : "/bin/sh",
"pw_name" : "bob",
}
},
]
}

关于jquery - 命令行查找一行并在其余文本之前和之后添加“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507583/

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