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
誰でも助けることができますか?
非常にありがとう
答え1
これがJSONファイルの一部であると仮定すると、次のコマンドはキーとキーを持つすべてのオブジェクトを見つけ、キー値を持つすべてのオブジェクトをjq
削除します。trait_type
value
value
None
jq 'del( .. |
select(
type == "object" and
has("trait_type") and has("value") and
.value == "None"
) )' file
上記のコマンドは、ジョブの結果を標準出力に書き込みます。保存するには、出力を新しいファイルにリダイレクトします。