Expandindo caminhos em variáveis Bash em expressões sed

2

Gostaria de perguntar o que há de errado nessa linha?

sed -i "/$PWD/a\ Hello World" historia.txt

quando eu a tinha neste '' , exceto pelo "" que estava funcionando, é claro sem a variável expandida.

    
por applenic 15.03.2015 / 16:58

1 resposta

3

O problema é que os caminhos contêm / caracteres e esse caractere usado em sed também para a separação de argumentos de substituição. A solução mais simples é simplesmente usar outro separador em sed , um não aparece em seus dados (digamos, um | ou, como no meu exemplo subseqüente, uma vírgula):

sed -i "s,${PWD},a Hello World," historia.txt

Edit: Acima explica o problema que você tem (as barras conflitantes). Mas eu vejo (agora) que você não está substituindo, mas adicionando uma linha após a linha correspondente. Nesse caso, você pode escapar das barras no caminho PWD de sed , por exemplo, por:

sed -i "/${PWD//\//\/}/a Hello World" historia.txt
    
por 15.03.2015 / 17:26

Tags