English 中文(简体)
在JQ中从原始档案中建立分组
原标题:Creating groupings in JQ from a raw file
  • 时间:2023-09-29 01:10:58
  •  标签:
  • jq

因此,我有一份信箱档案。

machine foo
login usera
password somepass
machine somehost
login userb
password otherpass

而且,我正试图把它归入一组3组的一组物体,然后我可以加以分类和挑选,排除不轨物体(或许还有其他非jq办法......)。

And I keep getting lost. Here s what I have:

jq -Rs  
split("
") |
map(select(length > 0)) |
    map(split(" ") |
            to_entries | group_by(.key % 2 == 0)
    ) |
    map(
        map(.[0].value )
    ) |
    map({
        (.[1]) : .[0]
    }) | add 
  ~/.netrc

I d love to see something slick to solve this

问题回答

我不知道我是否称“slick”,但这里有一份<代码>jq过滤器(使用--null-input<>/code>和-raw-input)。

N.B.:如果您具有任何非密码特性(如-),则您不妨使用scan(>[^/s]+”或等值scan(”/S+”)。 I.e. 不属于空间特性类别的任何东西。

[inputs| [scan("\w+"), (input_line_number/3|ceil)]]
| group_by(.[2])
| map(map({(.[0]): .[1]})|add)

页: 1 档案:

jq --null-input --raw-input  [inputs| [scan("\w+"), (input_line_number/3|ceil)]] | group_by(.[2]) | map(map({(.[0]): .[1]})|add)  ~/.netrc

投入:

[
  {
    "machine": "foo",
    "login": "usera",
    "password": "somepass"
  },
  {
    "machine": "somehost",
    "login": "userb",
    "password": "otherpass"
  }
]

Try it on





相关问题
why can t $module be used as a variable name? in jq

Is this behaviour of jq, w.r.t the non-allowed use of $module as a variable name, specified anywhere? $ jq -n --arg module X $module jq: error: syntax error, unexpected module, expecting IDENT ...