仅当我正在搜索的字符串是该行中唯一的内容时,如何使用 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