小编Rus*_*sso的帖子

Bash - 在文件中搜索特定字符串并替换为直接源

我试图在包含以下内容的文件中搜索字符串"missing":

<message>
    <source>TypeA</source>
    <translation>missing</translation>
</message>
<message>
    <source>TypeB</source>
    <translation>missing</translation>
</message>
<message>
    <source>TypeC</source>
    <comment>Context menu</comment>
    <translation>missing</translation>
</message>
Run Code Online (Sandbox Code Playgroud)

如果找到"缺失",我想用它的直接源名称替换字符串.例如:

<message>
    <source>TypeA</source>
    <translation>TypeA</translation>
</message>
<message>
    <source>TypeB</source>
    <translation>TypeB</translation>
</message>
<message>
    <source>TypeC</source>
    <comment>Context menu</comment>
    <translation>TypeC</translation>
</message>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能够使用awk搜索字符串并打印直接源名称:

match($0, /<source>(.*)<\/source>/,n){ src=n[1] }
match($0, /<translation>(.*)<\/translation>/,s){ trs=s[1] }
/unfinished/{ print "Translation missing or incomplete for: '" trs "'","located inside source named: '" src "'" }
Run Code Online (Sandbox Code Playgroud)

然后将其保存为something.awk使用以下方式调用:

awk -f something.awk filelocation
Run Code Online (Sandbox Code Playgroud)

但我不知道如何用源中的值替换字符串"missing".

任何人都可以建议我如何更换它?

bash awk sed xmlstarlet

2
推荐指数
1
解决办法
80
查看次数

标签 统计

awk ×1

bash ×1

sed ×1

xmlstarlet ×1