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