muitas pessoas sabem como usar sed básico:

sed 's/hello/bonjour/' greetings.txt echo "hi there" | sed 's/hi/hello/' 

que cobrirá 80% do seu id

utilização. Este post é sobre os outros 20%. Pensa nisto como um curso de seguimento depois de sed

para que possa mudar os fluxos através da canalização de saída para sed. E se quiser alterar o ficheiro no local?

Substituição no local

sed fornecido com o -i bandeira., Vamos consultar man sed:

-i extension Edit files in-place, saving backups with the specified extension. 

Vamos tentar:

Note que em sistemas Linux, um espaço depois de -i pode causar um erro, então insteadof -i .bak você pode tentar -i.bak.

assim, o conteúdo original do arquivo são salvos em um novo arquivo chamado .bak,e a nova versão alterada está no original greetings.txt. Agora tudo o que temos que fazer é:

rm greetings.txt.bak 

e nós mudamos o arquivo no lugar., Agora és o brinde do Escritório, cantado por bardos.

Vamos l33t

Espere, há mais em que man entrada sed -i:

If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc. 

Zero-comprimento de extensão, hein? Vamos usar a nossa original greetings.txt arquivo beforewe mudou:

-i '' (ou, no Linux, apenas -i) informa sed para usar um zero-lengthextension para a cópia de segurança., Uma extensão de tamanho zero significa que o backup tem o mesmo nome que o novo arquivo, então nenhum novo arquivo é criado. Remove a necessidade de executarrm depois de fazer uma substituição no local.

I haven’t run into any disk-space problems with -i ''. Se estiver preocupado com a man page ‘ s warning, pode utilizar a -i .bak técnica que menciono na secção anterior.

encontrar e substituir em vários ficheiros

gostamos de sedtanto que o usamos no nossoreplace script., Itworks like this:

replace foo bar **/*.rb 

o primeiro argumento é a cadeia que estamos encontrando. A segunda é a corda com a qual estamos a substituir. O terceiro é um padrão que corresponde à lista de arquivos com os quais queremos restringir a nossa pesquisa.