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 sed
tanto 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.
Deixe uma resposta