jq:用破折号替换斜线

jq: replache slash by dash chracter

我需要用 "-" 替换斜线字符。

我的意思是:

[
  "1934/08/20",
  "1961/01/10",
  "1952/01/25",
  "1967/07/24"
]

我需要:

[
  "1934-0820",
  "1961-01-10",
  "1952-01-25",
  "1967-07-24"
]

有办法得到吗?

使用 strptime 解析日期,然后 strftime 格式化它们。 map 可以将该过滤器映射到整个列表。

$ cat tmp.json
[
  "1934/08/20",
  "1961/01/10",
  "1952/01/25",
  "1967/07/24"
]
$ jq 'map(strptime("%Y/%m/%d") | strftime("%F"))' tmp.json
[
  "1934-08-20",
  "1961-01-10",
  "1952-01-25",
  "1967-07-24"
]

%F%Y-%m-%d 的快捷方式,如果可用的话。)

因为您想用 - 替换所有 /gsub 是可行的方法:

jq 'map(gsub("\/"; "-"))'

会产生

[
  "1934-08-20",
  "1961-01-10",
  "1952-01-25",
  "1967-07-24"
]

您可以在 this online demo

中进行测试