标签: xml

如何使用 xmllint 和 xpath 获取匹配属性值的列表?

我正在尝试使用 xmllint 从配置文件中解析 Solr 核心的名称。这有效:

xmllint --xpath /solr/cores/core/@name solr.xml |grep -Po '(?<=name=")[a-z-]+(?=")'

它返回类似:

core-a
core-b
...
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,但我想消除 grep。似乎只用 xpath 就可以做到这一点。如果没有 grep,输出将如下所示:

name="core-a" name="core-b" ...
Run Code Online (Sandbox Code Playgroud)

将表达式包装起来string()将多个输出减少到仅第一个(即core-a仅此而已),这是没有用的。如何string对每个结果应用该函数?

shell xml xmllint

5
推荐指数
1
解决办法
1万
查看次数

如何将传感器和冷却设备添加到 Thermal-conf.xml

我有一台安装了 Xubuntu 14.10 的 Toshiba NB510-108 上网本。在 Windows 7 Starter 下,温度传感器显示的值高达 45 摄氏度。在 Xubuntu 下,它们显示的值高达 55 度。我想使用 Thermald 将温度保持在 38 度。

我的 Thermal-conf.xml 文件仅包含一个 TSKN 类型的传感器和两个 rapl_controller 和 intel_powerclamp 类型的冷却设备。

传感器 -u 显示此

    user@user-TOSHIBA-NB510:~$ sensors -u
    acpitz-virtual-0
    Adapter: Virtual device
    temp1:
      temp1_input: 42.000
      temp1_crit: 110.000

    coretemp-isa-0000
    Adapter: ISA adapter
    Core 0:
      temp2_input: 43.000
      temp2_crit: 100.000
      temp2_crit_alarm: 0.000
    Core 1:
      temp3_input: 43.000
      temp3_crit: 100.000
      temp3_crit_alarm: 0.000
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何将上述传感器添加到Thermal-conf.xml,以及如何定位和添加其他冷却设备?

xml sensors

5
推荐指数
1
解决办法
5869
查看次数

我可以使用 xmlstarlet 将 XML 中的字段转换为标签吗?

例如,我想将标签中的字段转换为该标签内的标签

<book name="Data Structure" price="250" pages="350"/>
Run Code Online (Sandbox Code Playgroud)

<book name="Data Structure"> 
<price>250</price>
<pages>350</pages>
</book>
Run Code Online (Sandbox Code Playgroud)

xmlstarlet我想使用或在 Linux 命令行中执行此操作sed

xml text-processing xmlstarlet

5
推荐指数
1
解决办法
833
查看次数

无法在 Vim 编辑器中写入对文件的更改

我有一个 100 GB 的 xml 文档,我正在将其批量迁移到数据库。
在 中vim,我可以编辑文件,但无法使用:wq:q或保存更改:xx

我收到错误消息this file is read only - press ! to override
没有任何效果,所以我使用:q!忽略我的更改并退出vim.

我怎样才能保存我的更改?

奖金问题

如果我不等待整个文件加载到内存中并按Ctrl + c查看已填充的内容,则保存该文档是否只会保存加载到内存中的内容并删除其余内容?

linux osx vim permissions xml

5
推荐指数
1
解决办法
3万
查看次数

如何将“&amp;”替换为“&amp;” 除非已经是 XML 实体的一部分?

我有一个包含许多字符的文件(xml)&amp;/&lt;/&gt;/etc,但有时也有一些&字符本身。我想更改此符号&amp;而不替换其他符号。

cat file.xml | sed s/"&amp;"/"&"/g | sed s/"&"/"&amp;"/g > new_file.xml
Run Code Online (Sandbox Code Playgroud)

例如,这不起作用,因为它还替换了&中找到的 s &amp;&gt;

怎么做?

shell xml sed

4
推荐指数
1
解决办法
4051
查看次数

仅在一个子节点中使用 xmlstarlet 编辑 XML

使用命令时:

-bash-4.2$ xmlstarlet ed -u "/configurations/rules/rule/branch" -v 'DAVID' config.xml > final.xml
Run Code Online (Sandbox Code Playgroud)

我看到输出文件已更改为DAVID,但它在每个声明“分支”标签的地方都被全局更改。

但是我只想在一个子节点上更改它,比如说“APP1”,我需要使用什么命令?有没有办法将值“DAVID”作为参数?

  <configurations>
    <smtpHost>smtp3.gmail.com</smtpHost>
    <smtpPort>25</smtpPort>
    <emailFrom>GitPushNotifier@hpe.com</emailFrom>
    <emailSubject>Push notification</emailSubject>
    <!-- Stash general URL-->
    <gitViewerURL>http://mydtbld0005.gmail.com:7990/projects/</gitViewerURL>

    <!-- repositories list and commit URL path per repo -->

    <repositoryViewerPath name="hookTester" path="DevOps/repos/hooktester/commits/"/>

    <separator>#@#</separator>
    <catExe>cat</catExe>
    <catExeWindows>type</catExeWindows>
    <gitExe>git</gitExe>
    <gitExeWindows>C:\\Program Files (x86)\\Git\\cmd\\git.exe</gitExeWindows>
    <gitFolder>/gitdata/alm_mng.git</gitFolder>
    <gitFolderWindows>c:\gitdata\alm_mng.git</gitFolderWindows>
      <rules>
            <rule>
                <name>APP1</name>
                <repo>hookTester</repo>
                <branch>refs/heads/master</branch>
                <emailTo>test@gmail.com</emailTo>
                <path>F1/ido.xml </path>
            </rule>
            <rule>
                <name>APP2</name>
                <repo>hookTester</repo>
                <branch>refs/heads/master</branch>
                <emailTo>test@gmail.com</emailTo>
                <path>F2/ido.xml </path>
            </rule>
       </rules>
  </configurations> 
Run Code Online (Sandbox Code Playgroud)

xml xmlstarlet

4
推荐指数
1
解决办法
2744
查看次数

查找具有特定路径的 XML 文件

我正在处理 XML 文件,每个文件都可能有几十行长。在一个目录结构中,实际上有数百个这样的文件。是的,它是 Magento。

我需要找到包含该<foo><bar><boom><bang>元素的文件。一个<boom><bang>标签可以在其他变量定义的,所以我需要搜索的完整路径不只是结束标签或标签。每个标签之间可能有几十行,它们之间还有其他标签:

<foo>
  <hello_world>
... 50 lines ....
  </hello_world>
  <bar>
    <giraffe>
... 50 lines ....
    </giraffe>
    <boom>
      <bang>Vital information here</bang>
    </boom>
  </bar>
</foo>
Run Code Online (Sandbox Code Playgroud)

搜索定义的文件的优雅*nix 方式是<foo><bar><boom><bang>什么?我目前正在使用最新的 Debian 派生发行版。

这是我目前的解决方案,远非雄辩:

$ grep -rA 100 foo * | grep -A 100 bar | grep -A 100 boom | grep bang | grep -E 'foo|bar|boom|bang'
Run Code Online (Sandbox Code Playgroud)

grep bash xml locate file-search

4
推荐指数
1
解决办法
225
查看次数

使用 sed 将 xml 标记中的一个字符替换为另一个字符

我需要将字符替换ST

<episode-num system="onscreen">S1 E12</episode-num>
Run Code Online (Sandbox Code Playgroud)

我期望的结果:

<episode-num system="onscreen">T1 E12</episode-num>
Run Code Online (Sandbox Code Playgroud)

我不知道 Git 是如何深入工作的,我只是用它来替换我的 xml 标签中的那个字符,在论坛中研究我找到了一些信息并尝试了以下命令行:

sed -e :l -e 's@\(<episode-num system="onscreen">.*\)S\([^amp;]\)\(.*</episode-num>\)@\1T\2\3@;tl' guide.xml
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我希望你能帮助我。

xml

4
推荐指数
1
解决办法
1220
查看次数

如何在 XML 文件中重命名嵌入其他特定标签中的特定标签

仅针对嵌入其他指定标签中的指定标签,将一个标签值替换为另一个标签值的 xmlstarlet 命令是什么?

示例:搜索 tag 的每个出现,仅当它在标签内(在其他标签内)时才b需要替换为:d<a> ... </a>

这篇文章与如何在 XML 文件中将某些指定标签中的特定字符串替换为我试图找到的格式化 xml 文件的解决方案中嵌入标签中的其他字符串相关。

xml text-processing xmlstarlet

4
推荐指数
1
解决办法
703
查看次数

我可以使用 grep 命令从文件中提取完整日期吗?

我需要帮助使用 grep 从 Linux 系统上的文件中提取分区日期时间。

源文件是一个 XML,包含以下数据:

<item start="20231010073000 +0100" stop="20231010100000 +0100">...</item>
Run Code Online (Sandbox Code Playgroud)

我需要提取完整的开始日期,但使用 grep 我无法得到完整的结果。我的代码:

for startDate in $(grep -Eo 'start="[0-9]{14} [\+|\-][0-9]{4}"' "$filepath" ); do
  echo "$startDate"
done
Run Code Online (Sandbox Code Playgroud)

我得到了两个不同的结果:

start="20231010073000
+0100"
Run Code Online (Sandbox Code Playgroud)

我可以得到它如下:

start="20231010073000 +0100"
Run Code Online (Sandbox Code Playgroud)

我尝试过\s[[:space:]]和其他示例,但使用相同的解决方案。

我的代码似乎有错误,但我无法修复它!

我很感谢任何形式的帮助!

grep bash xml text-processing

4
推荐指数
1
解决办法
836
查看次数

标签 统计

xml ×10

text-processing ×3

xmlstarlet ×3

bash ×2

grep ×2

shell ×2

file-search ×1

linux ×1

locate ×1

osx ×1

permissions ×1

sed ×1

sensors ×1

vim ×1

xmllint ×1