Pode sed salvar sua saída em um arquivo?

22

> pode fazer isso.

echo "text" > file

tee pode fazer isso.

echo "test" | tee file 

Pode sed fazer isso sem usar nenhuma das opções acima? É possível salvar a saída de um comando sed em um arquivo sem usar > ou tee ?

    
por Folatt 16.05.2016 / 11:42

3 respostas

32

tee e > pode ser usado para redirecionamento de dados porque estes são destinados a serem usados para redirecionamento de dados no linux.

sed, por outro lado, é um editor de fluxo. sed não se destina ao redirecionamento de dados como tee e > destinado a ser. No entanto, você pode usar conjuntos de comandos para fazer isso.

use tee ou > com sed

sed 's/Hello/Hi/g' file-name | tee file

ou

sed 's/Hello/Hi/g' file-name > file

use sed com a opção -i

sed -i 's/Hello/Hi/g' file-name

o último não redireciona, em vez disso, ele fará alterações no próprio arquivo.

    
por 16.05.2016 / 11:55
6

sed tem o comando w que pode fazer o que você precisa:

w filename

Write the current pattern space to filename.

sed 'w file' por conta própria terá o mesmo efeito que tee file . Se houver outros comandos sed, coloque o w last:

sed 's/This/That/;w file'

No entanto, isso não será afetado pela opção -n/--quiet/--silent . Isso apenas suprime o conteúdo que, de outra forma, teria ido para a saída padrão.

    
por 16.05.2016 / 13:31
0

Como ankidaemon corretamente apontou como podemos salvar saída sed para um arquivo. Eu gostaria de acrescentar que, se estamos executando algumas operações em um arquivo, ou seja, substituir e gostaria de salvar a saída para o mesmo arquivo. Há um sinalizador -i em sed , o que torna possível a edição in-loco. Isso, no entanto, cria um arquivo de backup no processo. Se isso não for necessário, isso pode ser feito simplesmente passando o nome do arquivo vazio para -i flag.

    
por 08.11.2018 / 16:41