Você precisa de âncoras de linha em vez de limites de palavras
$ sed '/^ze$/d' file
ze.com
example.ze
zero.com
Ubuntu, sed remove ze se ze estiver sozinho na linha
O mais próximo que obtive é sed "s/\bze\b//g" e sed "s/^\bze\b//g" , o que não produz o resultado desejado.
Antes de sed:
ze.com
example.ze
zero.com
ze
Após sed:
ze.com
example.ze
zero.com
Você precisa de âncoras de linha em vez de limites de palavras
$ sed '/^ze$/d' file
ze.com
example.ze
zero.com
Usando grep :
$ grep -vxF ze file
ze.com
example.ze
zero.com
As opções usadas:
-v nega o sentido da correspondência, de forma que apenas as linhas não que correspondem ao padrão são retornadas.
-x exige que o padrão corresponda a uma linha completa do início ao fim.
-F diz a grep que o padrão é uma sequência fixa e não uma expressão regular.
O problema com as expressões sed é que uma substituição modifica uma linha na entrada, mas nunca apaga uma linha. O padrão \bze\b corresponderá corretamente à palavra completa ze , mas essa palavra também existe em outras linhas, não apenas na última linha.
Para excluir uma linha com sed , use seu comando d junto com uma expressão regular que corresponda à linha que você deseja remover, como ^ze$ , como steeldriver mostra em sua resposta .
Para o exemplo específico (remover a última linha),
sed '$d' file
também seria uma opção. Aqui, $ não é uma expressão regular (desde que não esteja dentro de /.../ ), mas o endereço especial da última linha no arquivo.
Tags sed