検索している文字列が行にある唯一のものである場合にのみ、sed または他の何かを使用して行を削除するにはどうすればよいでしょうか?
出力例:
device-address-binding: ?
database-revision: 20
-- Found 198 Objects
},
{
object-identifier: (Analog Input, 1)
object-type: ({ Analog Input },)
object-name: "CA-1 T EXT"
descrip
「}」を含む行を削除する必要がありますが、他に何も含まれていない行のみ削除する必要があります。sed を使用して「}」を含む行を一致させて削除すると、出力の上の行「object-type」も削除されます。
「},/n」を検索できればよいのですが、sed がそのように動作しないことは誰もが知っています。
ご協力いただきありがとうございます。
答え1
必要ありませんsed
:
grep -vx }, file
または空白を許可するには:
grep -vx '[[:blank:]]*},[[:blank:]]*' file
答え2
sed
$
行末に使用します:
sed '/^},$/ d'
^
は行の先頭を意味します。 の周囲に多少の空白文字を許容する必要がある場合もあります},
。
sed '/^[[:space:]]*},[[:space:]]*$/ d'
答え3
sed '/^[[:blank:]]*},[[:blank:]]*$/d' file
答え4
さまざまな方法で実行できますが、perl
解決策は次のとおりです。
$ perl -ple 's#^\s*},\s*##' file
device-address-binding: ?
database-revision: 20
-- Found 198 Objects
{
object-identifier: (Analog Input, 1)
object-type: ({ Analog Input },)
object-name: "CA-1 T EXT"
descrip