Quelle ' est la meilleure façon de modifier un fichier avec un script bash?

En utilisant / bin / bash sur RHEL 5.8 et je souhaite automatiser lédition dun fichier. Jai besoin du script pour rechercher le fichier et remplacer une ligne dans le fichier. Exemple de ligne:

Other line Current date 01121990 Other line 

Recherchez cette ligne et remplacez la chaîne de date par une date prédéterminée. Je ne peux « pas faire écho à un nouveau fichier et entrer ma date car ce fichier sera copié à partir dun fichier spécifique au serveur. Merci!

Commentaires

  • sed serait loutil de choix ici …

Réponse

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

Cest le moyen le plus simple. Cela suppose que toutes les lignes contenant une date à remplacer sont également les seules lignes à commencer par « Date actuelle ».

Notez que le niveau dutilisateur qui exécute cette commande doit également avoir lautorisation de modifier ce fichier.

-i signifie édition en ligne, ce qui signifie que vous éditez le fichier directement.

^Current date.* 

Désigne toutes les lignes commençant par: Date actuelle et se terminant par nimporte quoi. En dautres termes, remplacez la ligne entière par ce qui se trouve dans la deuxième partie /…/ de lobjet sed.

Double « est utilisé autour de linstruction sed afin que les variables soient utilisées comme variables, et non chaînes.

Commentaires

  • Merci Lizardx que ' est exactement ce dont jai besoin, testé et testé fonctionne très bien
  • très heureux de l’entendre.

Réponse

ed peut également effectuer modification sur place des fichiers ! Le numéro dinode du fichier modifié reste inchangé.

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" 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *