小编Chr*_*ris的帖子

jq:错误:无法添加数字和字符串

我想从 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)

type-conversion jq

12
推荐指数
2
解决办法
7281
查看次数

jq:错误:无法迭代字符串

有人可以解释一下下面的警告吗?

输入文件是:

{
 "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)

jq

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

在每个时间块之间添加空行

我有一个输入日志表格:

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 awk sed

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

在 bash 4 中将每个单词的第一个字符设置为大写,其他字符设置为小写?

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)

bash

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

标签 统计

bash ×2

jq ×2

awk ×1

sed ×1

type-conversion ×1