如何使用 sed 将所有匹配项放入 Bash 数组?
我的输入是
<node><system_id>app1261.works.com</system_id><name>app1261</name></node><node><system_id>app1361.works.com</system_id><name>app1361</name></node><node><system_id>app1461.works.com</system_id><name>app1461</name></node>
Run Code Online (Sandbox Code Playgroud)
预期输出存储在数组中
app1261.works.com
app1361.works.com
app1461.works.com
Run Code Online (Sandbox Code Playgroud)
我正在尝试下面的命令,但它总是返回最后一个匹配项而不是所有匹配项。
sed -ne '{s/.*<system_id>\(.*\)<\/system_id>.*/\1/p;q;}' <<< "$xml"
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个?
如果你有gnu grep然后使用这个基于环视的解决方案:
grep -Po '(?<=<system_id>)[^<>]+(?=</system_id>)' <<< "$xml
app1261.works.com
app1361.works.com
app1461.works.com
Run Code Online (Sandbox Code Playgroud)
否则,一个grep + sed解决方案:
grep -Eo '<system_id>([^<>]+)</system_id>' <<< "$xml |
sed -E 's~</?system_id>~~g'
app1261.works.com
app1361.works.com
app1461.works.com
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |