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"