Qual ' é a melhor maneira de editar um arquivo com um script bash?

Usando / bin / bash no RHEL 5.8 e desejo automatizar a edição de um arquivo. Preciso do script para pesquisar o arquivo e substituir uma linha no arquivo. Exemplo de linha:

Other line Current date 01121990 Other line 

Pesquise esta linha e substitua a string de data por uma data predeterminada. Não posso “repetir para um novo arquivo e inserir minha data, pois este arquivo será copiado de um arquivo específico do servidor. Obrigado!

Comentários

  • sed seria a ferramenta escolhida aqui …

Resposta

your_date="your desired date" sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file 

Essa é a maneira mais fácil. Isso pressupõe que todas as linhas que contêm uma data para substituir também são as únicas linhas que começam com “Data atual”.

Observe que o nível de usuário que executa este comando também deve ter permissão para editar esse arquivo.

-i significa edição em linha, o que significa que você está editando o arquivo diretamente.

^Current date.* 

Significa todas as linhas iniciando com: Data atual e terminando em qualquer coisa. Em outras palavras, substitua a linha inteira pelo que está na segunda /…/ parte do sed.

Double “são usados em torno da instrução sed para que as variáveis sejam usadas como variáveis, não strings.

Comentários

  • Obrigado Lizardx que ' é exatamente o que eu preciso, testei e funciona muito bem
  • muito prazer em ouvir isso.

Resposta

ed pode fazer edição de arquivos no local também ! O número de inode do arquivo editado permanece inalterado.

file="/path/to/file" your_date="your desired date" ls -i "$file" printf "%s\n" H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file" ls -i "$file" 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *