substitui o texto no arquivo sem sobrescrever o arquivo

3

Eu quero usar a linha de comando para editar um arquivo de texto, mas não substituí-lo. Quero preservar o proprietário, o grupo e as permissões do arquivo.

Eu tenho um arquivo que contém uma contagem do número de vezes que um equipamento é usado. Este arquivo informa-me quando o equipamento precisa de manutenção. Não há preocupação com segurança, eu preciso que todos os usuários possam ler e escrever este arquivo.

Se eu usar sed para editar as contagens, ele substituirá o arquivo e a propriedade e as permissões do arquivo serão alteradas. Percebi que quando edito o arquivo com o vi, a propriedade e as permissões do arquivo não são alteradas.

Eu quero fazer a mesma coisa na linha de comando. Por exemplo:

cat foo.txt

foo

ls -l foo.txt

-rw-rw-rw-   1 root     root  foo.txt

cat foo.txt | sed -e 's/foo/bar/' > foo.txt

ls -l foo.txt

-rw-r--r--   1 joe  admin  foo.txt

Isso é um problema porque tanto o bill quanto o joe usam o script que atualiza o arquivo de contagem. Quando joe usa, as permissões mudam, impedindo que a conta seja usada.

Como o vi pode editar texto sem alterar o proprietário e as permissões, suponho que isso pode ser feito, mas estou com dificuldades para descobrir como fazer isso.

    
por joshxdr 07.07.2010 / 23:42

1 resposta

1

Não é para isso que serve a opção -i?

sed -i -e 's/foo/bar/' foo.txt

Se você fornecer um argumento para -i, ele faz um backup para você.

    
por 08.07.2010 / 00:59