AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-123728

David M. Karr's questions

Martin Hope
David M. Karr
Asked: 2024-09-27 04:58:00 +0800 CST

无法使用 xmllint 或 xmlstarlet 从 Maven settings.xml 中提取某些属性

  • 5

我在 ~/.m2/settings.xml 中有一个 Maven 设置文件。我需要编写一些脚本来从其中一个服务器条目中提取用户名和密码。

我尝试使用“xmllint”和“xmlstarlet”,并使用我认为正确的(不同的)命令行参数。两者的结果都只是一个空字符串。没有错误,只是什么也没打印。

这是~/.m2/settings.xml 的摘录:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!--
    Licensed to the Apache Software Foundation (ASF) under one
    ...
    --><!--
     | This is the configuration file for Maven. It can be specified at two levels:
    ...
     |-->
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

      <servers>
        <server>
                    <id>central</id>
                    <username>...</username>
                    <password>...</password>
        </server>
    ...

这与 Maven 配合得很好。

对于 xmllint,我正在尝试以下操作:

xmllint --xpath 'string(//server[id="central"]/username/text())' ~/.m2/settings.xml 

对于 xmlstarlet 来说,它是这样的:

xmlstarlet sel -T -R -D -t -v "//settings/servers/server[id='central']/username/text()" ~/.m2/settings.xml

这些在语义上略有不同,但我尝试了几种变体。所有这些只是打印一个空字符串。

bash
  • 1 个回答
  • 12 Views
Martin Hope
David M. Karr
Asked: 2022-05-19 12:32:30 +0800 CST

如何合并和排序两个shell变量,删除重复项

  • 0

在我的 bash 脚本中,我将有两个名为“args1”和“args2”的变量。他们每个人都会有这样的内容:

Matching cluster names:
[a-z]+
[a-z]+
...

所以“args1”可能是:

Matching cluster names:
dev1ff
dev2ff

和“args2”可能是:

Matching cluster names:
dev2ff
dev3ff

我需要结合这些来产生:

Matching cluster names:
dev1ff
dev2ff
dev3ff

我可以用这条线接近这一点:

echo "$(echo "$args1" | grep -v "^Matching") $(echo "$args2" | grep -v "^Matching")" | sort -u

这会产生大致如下所示的内容:

Matching clusters:
dev1ff
dev2ff dev3ff

实际名称无关紧要,但问题是我无法在第一块和第二块之间插入换行符。我在两个“$(...)”块之间的那个空间中尝试了几种变化,但没有任何效果。

bash
  • 1 个回答
  • 40 Views
Martin Hope
David M. Karr
Asked: 2018-01-09 13:25:58 +0800 CST

如何将嵌入(引用)的 json 字符串转换为 json

  • 51

我熟悉用于解析 json 的“jq”。

我使用一项产生 json 响应的服务,其中一个属性本身就是一个 json 字符串。如何将该引用值转换为有效的 json 字符串,以便我可以使用 jq 处理它?

例如,如果我只是从“jq.”查看简单的漂亮打印的 json,这里是输出的简短摘录:

"someJsonString": "{\"date\":\"2018-01-08\", ...

我可以使用 jq 来获取该属性的值,但我需要通过“取消转义”将引用的字符串转换为有效的 json。

我想我可以将它导入 sed,删除开始和结束双引号,并删除所有反斜杠(“ sed -e 's/^"//' -e 's/"$//' -e 's/\\//g'”)。这似乎可行,但这似乎不是最强大的解决方案。

更新:

为了更清楚地了解我在做什么,这里有几个省略的示例显示了我尝试过的内容:

% curl -s -q -L 'http://.../1524.json' | jq '.results[0].someJsonString' | jq .
"{\"date\":\"2018-01-08\",...
% echo $(curl -s -q -L 'http:/.../1524.json' | jq '.results[0].someJsonString') | jq .
"{\"date\":\"2018-01-08\",...

更新:

这是一个完全独立的示例:

% cat stuff.json | jq .
{
  "stuff": "{\"date\":\"2018-01-08\"}"
}
% cat stuff.json | jq '.stuff'
"{\"date\":\"2018-01-08\"}"
% cat stuff.json | jq '.stuff' | jq .
"{\"date\":\"2018-01-08\"}"

更新:

如果我尝试使用真正的 jq 表达式处理最后一个输出,它会执行以下操作:

% cat stuff.json | jq '.stuff' | jq '.date'
assertion "cb == jq_util_input_next_input_cb" failed: file "/usr/src/ports/jq/jq-1.5-3.x86_64/src/jq-1.5/util.c", line 371, function: jq_util_input_get_position
Aborted (core dumped)
json jq
  • 2 个回答
  • 49776 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve