行に文字列しかない場合は、行を削除する方法

行に文字列しかない場合は、行を削除する方法

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

関連情報