我想从 jq 输出下面打印成员和 id 的值:
$ cat test_|jq -r '.[] | select(.name=="AAA") | .'
{
"name": "AAA",
"members": 10,
"profiles": 0,
"templates": 0,
"ldapGroups": 0,
"ldapMembers": 0,
"id": "20"
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它仅适用于其中之一:
$ cat test_|jq -r '.[] | select(.name=="AAA") | .members'
10
Run Code Online (Sandbox Code Playgroud)
用 +" "+ 我得到错误:
$ cat test_|jq -r '.[] | select(.name=="AAA") | .members+" "+.id'
jq: error: number and string cannot be added
Run Code Online (Sandbox Code Playgroud) 有人可以解释一下下面的警告吗?
输入文件是:
{
"env": "DC",
"hosts" :
[
{
"apt_update_last_success": "1495991703",
"architecture": "amd64",
"hostname": "h1"
},
{
"apt_update_last_success": "1495991703",
"architecture": "amd64",
"hostname": "h2"
},
{
"apt_update_last_success": "1496045706",
"architecture": "amd64",
"hostname": "h3"
},
{
"apt_update_last_success": "1496045705",
"architecture": "amd64",
"hostname": "h4"
},
{
"apt_update_last_success": "1496049305",
"architecture": "amd64",
"hostname": "h5"
},
{
"apt_update_last_success": "1496049307",
"architecture": "amd64",
"hostname": "h6"
}
]
}
Run Code Online (Sandbox Code Playgroud)
jq 命令返回预期的内容,但也打印警告我不知道为什么:
$ jq -r '.[][] | select(.hostname=="h6")' ddd.json
jq: error: Cannot iterate over string
{
"apt_update_last_success": "1496049307",
"architecture": "amd64",
"hostname": "h6" …Run Code Online (Sandbox Code Playgroud) 我有一个输入日志表格:
system 2018-02-05 04:15:49 :: aaaaaaaaaaaaa
system 2018-02-05 04:15:51 :: aaaaaaaaaaaaa
system 2018-02-05 04:15:51 :: aaaaaaaaaaaaa
system 2018-02-05 04:15:52 :: aaaaaaaaaaaaa
system 2018-02-05 04:15:53 :: aaaaaaaaaaaaa
system 2018-02-05 04:20:06 :: ccccccccccccc
system 2018-02-05 04:21:10 :: bbbbbbbbbbbbb
system 2018-02-05 04:21:10 :: ccccccccccccc
system 2018-02-05 04:21:10 :: ccccccccccccc
system 2018-02-05 04:21:10 :: ccccccccccccc
system 2018-02-05 04:23:49 :: bbbbbbbbbbbbb
system 2018-02-05 04:23:49 :: ccccccccccccc
Run Code Online (Sandbox Code Playgroud)
并希望用空行分隔每个时间块.上述输入的预期输出将是:
system 2018-02-05 04:15:49 :: aaaaaaaaaaaaa
system 2018-02-05 04:15:51 :: aaaaaaaaaaaaa
system 2018-02-05 04:15:51 :: aaaaaaaaaaaaa
system 2018-02-05 04:15:52 …Run Code Online (Sandbox Code Playgroud) bash 中的小写/大写有一个很好的功能:
$ string="A FEW WORDS"
$ echo "${string,}"
a FEW WORDS
$ echo "${string,,}"
a few words
$ echo "${string,,[AEIUO]}"
a FeW WoRDS
Run Code Online (Sandbox Code Playgroud)
有人知道类似的方法将变量上每个单词中的第一个字符设置为大写,并将每个单词中的其余字符设置为小写吗?
$ echo "${string,,[^.]}"
a few words
$ echo "${string,,[^]}"
A FEW WORDS
$ echo "${string,,.}"
A FEW WORDS
$ echo "${string,,^.}"
A FEW WORDS
$ echo "${string,,^?}"
A FEW WORDS
$ echo "${string,,?}"
a few words
Run Code Online (Sandbox Code Playgroud)