[英]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.