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