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"