Как удалить строку, если строка — единственное, что на ней находится

Как удалить строку, если строка — единственное, что на ней находится

Как можно использовать 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

Связанный контент