gpt4 book ai didi

linux - 如何在文件的数学行中插入字符

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

例如,我有一个包含以下内容的文件:

{

a : "apple"

b : "orange"

}

{

a : "meat"

}

我想在所有带有“a :”的行中添加“_1”,并得到结果:

{

a : "apple_1"

b : "orange"

}

{

a : "meat_1"

}

有什么方法可以通过bash命令

最佳答案

您的间距不清楚,无论您是 "a : ..." 还是 "a: ..."。您还拥有与 json 类似的内容,如果是这样,您需要使用 json 感知实用程序来确保结果被验证为有效的 json。

但是,如果它只是文本,则 awk 可以通过检查第一个字段(或 "a : ..." 情况下的第一个和第二个字段)是否与您的 a: 前缀匹配来为您处理任一情况("a : ...""a: ...")。然后,您只需将 _1 附加到行尾,即可在整行上使用 sub 函数(例如 $0)保留前导空格。在所有情况下,该行都会输出,或者保持不变,或者如果满足您的前缀,则附加 _1

您可以通过以下方式做到这一点:

awk '$1=="a:" || ($1=="a" && $2==":") {sub(/"$/,"_1\"",$0)}1' file

(注意:您可以删除不需要的 || 的任何一侧)

您可以在GNU awk - String-Manipulation Functions查看sub功能的用户

示例使用/输出

使用 file 中的输入文件,将得到以下结果:

$ awk '$1=="a:" || ($1=="a" && $2==":") {sub(/"$/,"_1\"",$0)}1' file
{

a : "apple_1"

b : "orange"

}

{

a : "meat_1"

}

使用 sed

您还可以使用 sed 完成同样的事情(在这种情况下可能会稍微更有效),使用:

sed '/^\s*a\s:/s/"$/_1"/' file

仔细检查一下,如果有疑问请告诉我。

关于linux - 如何在文件的数学行中插入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60587546/

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