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