[英]Grep from txt file (JSON format)
我有一個 JSON 格式的 txt:
{
"items": [ {
"downloadUrl" : "some url",
"path": "yxxsf",
"id" : "abc",
"repository" : "example",
"format" : "zip",
"checksum" : {
"sha1" : "kdhjfksjdfasdfa",
"md5" : "skjfhkjshdfkjshfkjsdhf"
}
}],
"continuationToken" : null
}
我想使用 grep 提取下載 url 上下文(在本例中我想要“一些 url”)並將其存儲在另一個 txt 文件中。 TBH 我從未使用過 grep
使用grep
grep -oP 'downloadUrl"\s:\s"(.*)",' myfile > urlFile.txt
看到這個正則表達式在行動: https : //regex101.com/r/DvnXCO/1
更好的方法是使用jq
下載 Windows 版jq
: https : //stedolan.github.io/jq/download/
jq ".items[0].downloadUrl" myfile > urlFile.txt
盡管 json string
可能包含由反斜杠轉義的雙引號字符,但 URL 中的雙引號和反斜杠都應根據 RFC 3986 進行百分比編碼。然后您可以使用以下命令提取 URL:
tr "[:space:]" " " < file.json | grep -Po '"downloadUrl"\s*:\s*\K"[^"]+"'
tr
對 json 文件進行預處理以將所有blank
字符轉換為空格。 如果名稱和值對位於單獨(但連續)的行中,則以下grep
將起作用。\\K
運算符是一個可變長度的后視,在匹配結果中不包括前面的模式。 請注意,上面的命令適用於提供的示例,但對於任意輸入可能不夠健壯。 我仍然建議將jq
用於嚴格的目的。
如果您只想使用 grep:
grep downloadURL myfile > new_file.txt
如果您更喜歡更簡潔的選項,請添加cut
命令:
grep downloadURL myfile | cut -d\" -f4 > new_file.txt
順便說一句,json 文件的圖像顯示您正在使用記事本(Windows?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.