如果字串是該行中唯一的內容,如何刪除該行

如果字串是該行中唯一的內容,如何刪除該行

只有當我正在搜尋的字串是該行中唯一的內容時,如何使用 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

相關內容