【发布时间】:2019-12-28 17:17:23
【问题描述】:
我有一个 JSON 文件,其中包含文件列表及其大小。 我正在尝试grep 仅包含 文件大小 的行,如下所示:
"filesize": 10000000
我试过单引号
grep -f files.json -o '"filesize":\s[0-9]*'
但我得到的只是这个错误(每行一次):
grep: files.json:200: Invalid range end
然后我尝试只转义双引号
grep -f files.json -o \"filesize\":\s[0-9]*
我得到同样的错误。正则表达式代码本身似乎很好,因为它可以在 Notepad++ 中工作(没有单引号),我只是无法让它在 shell 中工作。我尝试使用 bash 和 zsh。
编辑:解决它:
jq . files.json | grep -o '"filesize":\s[0-9]*'
【问题讨论】:
-
如果你只是做
grep -f files.json -o "filesize"?它应该给你整行 -
或:
grep -f files.json -o 'filesize:\s[0-9]*'(删除文件大小周围的“) -
不要使用面向行的工具来解析 JSON,使用像 jq 这样的语法感知工具
-
@Chelmy88 我都试过了,但我得到了同样的错误。
-
你能显示文件的一部分吗?
标签: json regex shell command-line