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
中进行测试
我需要用 "-"
替换斜线字符。
我的意思是:
[
"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
中进行测试