如果字符串是该行中唯一的内容,如何删除该行

如果字符串是该行中唯一的内容,如何删除该行

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

相关内容