行に文字列のみが含まれている場合に行を削除する方法

行に文字列のみが含まれている場合に行を削除する方法

検索している文字列が行にある唯一のものである場合にのみ、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

関連情報