「content」という単語で始まる行を削除しようとしましたが、成功しませんでした。
「content」という単語は、実際にはファイルの先頭または空白またはタブの後ろから始めることができます。
sed 構文にはどのような問題がありますか?
sed "/^[ \t]*"content"\b/Id" file.txt
"version" : 9,
"Config" : {
"cluster_name" : "HDP",
"stack_id" : "HDP"
},
"properties" : {
"content" : "\n#!/bin/bash\n\n# Set KAFKA specific environment variables here.\n\n#
"kafka_user_nproc_limit" : "65536"
.
.
file.txtの期待される出力
"version" : 9,
"Config" : {
"cluster_name" : "HDP",
"stack_id" : "HDP"
},
"properties" : {
"kafka_user_nproc_limit" : "65536"
.
.
ベストアンサー1
sed
実行中のアクションがパターンに従って行をフィルタリングするだけであれば、これを行う必要はありません。grep
目的は次のとおりです。
grep -iv '^[[:space:]]*"content"' < file.txt
grep -i
、I
標準アドレスフラグとは反対です。
あるいは、これが正しいJSONファイルの場合は、JSON解析ユーティリティを使用してjq
キーを削除できます。たとえば、次のようになります。
jq 'del(.properties.content)' < file.txt