Sed
使用帶有 sed 的正則表達式從文件中刪除文本
我正在嘗試使用 sed 從 json 文件中刪除一些行。您可能會說,我非常業餘,但認為我的正則表達式是正確的。但是 sed 會引發各種錯誤,包括未終止的地址和未終止的“s”命令。
我要刪除的文本是:
{ "trait_type": "Accessories", "value": "None" }
我必須刪除這個正則表達式(trait_type 在不同的文件中是不同的,所以我需要根據值為“none”來刪除整個塊)
(\{)([\r\n].+)(\r|\n|)(.*(?:None).*)([\r\n].*)
使用線上正則表達式測試器,以上似乎工作完美。
我正在使用的命令(和幾個變體)是:
sed -e 's/\{([\r\n].+)(\r|\n|)(.*(?:None).*)([\r\n].*)//g' 2.json
任何人都可以提供幫助嗎?
非常感謝
假設這是 JSON 文件的一部分,以下
jq
命令將查找所有具有trait_type
key 和value
key 的對象,並刪除所有value
key 具有 value的對象None
。jq 'del( .. | select( type == "object" and has("trait_type") and has("value") and .value == "None" ) )' file
上面的命令會將操作結果寫入標準輸出。將輸出重定向到一個新文件以保存它。