如何在bash上获取命令输出的特定部分

时间:2018-11-03 11:34:15

标签: bash

我正在尝试使用bash获取命令输出的特定部分。因此,当您运行此命令时;

./xuez-cli getnetworkinfo

它会为您提供这样的输出;

"localaddresses" : [
    {
        "address" : "snyc3vzezoch2jax.onion",
        "port" : 41798,
        "score" : 4
    }
]

从此输出中,我需要获取此地址snyc3vzezoch2jax.onion并将其放入文本文件或变量中。

.onion部分始终保持不变,尽管之前的字符每次都不同,所以我需要一个通用的解决方案来获取整个地址。

我尝试了./xuez-cli getnetworkinfo | grep address,尽管它给了我这个输出;

"localaddresses" : [
        "address" : "snyc3vzezoch2jax.onion",

,仍然找不到将address部分粘贴到文本文件或变量中的方法。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用jq。

  • 将输出分配给变量:

    addr=$(./xuez-cli getnetworkinfo | jq -r '.localaddresses[0].address // "something other than null"')
    
  • 将输出写入文件:

    ./xuez-cli getnetworkinfo | jq -r '.localaddresses[0].address // "something other than null"' > addrfile