Se você quiser usar read
para passar os nomes e quiser excluir linhas que contenham os nomes:
read deletename; sed "/$deletename/d" test.txt
então pressione enter e read
espera que você digite algo, então digite o que você quer que seja deletename
, por exemplo 0
, então pressione enter novamente e o comando sed
é executado. O conteúdo de test.txt
aparecerá no terminal, mas todas as linhas que contiverem 0
, ou o que você digitou, serão excluídas do fluxo (NÃO do arquivo)
Se você quiser excluir apenas os nomes, é assim:
read deletename; sed "s/$deletename//g" test.txt
Se você digitar 0
, todas as instâncias de 0
serão excluídas.
Você pode redirecionar (ou tee
) a saída para um novo arquivo, ou se você quiser modificar o arquivo no local , use o sinalizador -i
(após o teste)
read deletename; sed -i "/$deletename/d" test.txt
Neste caso, você não verá saída; as alterações serão gravadas no arquivo em vez de serem exibidas no terminal (no STDOUT).
Você precisa usar aspas duplas para permitir a expansão de parâmetro, já que as aspas simples irão suprimi-lo. mas a maneira mais correta, eu acho, embora não seja necessário neste caso simples, usar aspas simples em torno das outras partes da expressão e citar a variável normalmente:
sed 's/'"$deletename"'//g' test.txt