sed
solução:
username="test.test"
sed "s/ *$username */ /" file
A saída:
@some_group1 = take.me bake.shake push.pull
@some_group2 = take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull
Eu estou tentando remover strings do file1.txt como parte de um script bash.
Por exemplo, o arquivo contém:
@some_group1 = take.me bake.shake test.test push.pull
@some_group2 = test.test take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull test.test
A saída que desejo é:
@some_group1 = take.me bake.shake push.pull
@some_group2 = take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull
Eu tentei usar o comando sed, mas não tenho sorte em fazê-lo funcionar.
sed -i 's/\[?]\$username\[?]\/ /g' file1.txt
Qual seria a melhor maneira de realizar essa tarefa?
Para usar aspas simples e inserir um nome de variável, faça o seguinte:
sed 's/ '"$username"'//' file1.txt
Não é muito bonito, mas pode ser útil em algum momento. Independentemente de usar aspas simples ou aspas duplas diretamente, há um problema subjacente furtivo com o código. Se a variável contiver um '/', o sed irá tratá-lo como parte do comando 's', o que significa que haverá 4 barras e você receberá um erro de sintaxe como:
sed: bla bla bla: unknown option to 's' #good luck debugging that :)
Para lidar com isso, eu geralmente escolho outro caractere delimitador de sintaxe, um que eu saiba que é menos provável que apareça na minha variável. Por exemplo, o novo comando se tornaria:
sed 's# '"$username"'##' file1.txt
Tags sed