Não é possível entender o comportamento do comando sed [duplicado]

2

Eu tenho um teste de arquivo com alguns dados e estou usando o comando sed para modificar algumas palavras no arquivo e redirecionar a saída para o mesmo arquivo, mas depois que o comando é executado, o arquivo não contém dados. Eu não entendi a razão por trás desse comportamento?

$ cat test
foo
bar
123
bar
foo
foo
$ sed 's/foo/bar/' test > test
$ cat test
$
    
por Pankaj Pandey 02.12.2016 / 11:33

2 respostas

5

Não é uma prática recomendada usar o mesmo arquivo como entrada e saída. O que acontece é que o shell (bash) abre e trunca (o > em seu comando) o arquivo antes de ser lido pelo sed.

Então sed 's/foo/bar/' test > test.out seria o jeito certo de fazer isso.

    
por Soren A 02.12.2016 / 11:40
2

sed -i 's/foo/bar/g' test

Substituirá foo por bar e gravará as alterações em test .

$ cat test
bar
bar
123
bar
bar
bar
    
por Rahul 02.12.2016 / 11:52