[英]How can I grep a a string with quotes and a regex?
我有一个 JSON 文件,其中包含文件列表及其大小。 我试图只grep包含文件 size的行,它看起来像这样:
"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
标志用于指定将从中读取模式的文件,而不是要处理的数据。 您收到的错误是grep
抱怨它无法将文件的某些数据解析为模式。
您可以使用以下内容:
grep -o '"filesize":\s[0-9]*' files.json
正如其他人所说,最好使用能够理解 JSON 语法的工具从 JSON 文件中提取数据,但我们需要查看您的数据结构以根据这些工具之一提供答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.