Bonjour,
[Flood contexte]
Dans le cadre d'une duplication de base oracle sur AIX, je suis amené a recopier des répertoires, puis a renommer et modifier certains fichiers.
La tâche étant fastidieuse, et courante, je souhaite l'automatiser via un script shell.
J'ai eu quelques soucis pour renommer mes fichiers et répertoires, mais à force de manipuler la commande sed, j'ai fini par aboutir au résultat suivant qui fonctionne.
[/Flood contexte]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ADB="$1" DB="$2" # ADB = <ancien_nom_base> # DB = <nouveau_nom_base> [..] # Renomme les repertoires ls | grep $ADB | sed "s/\(.*\)$ADB\(.*\)$/mv \"&\" \"\1$DB\2\"/">mv.log ls | grep $ADB | sed "s/\(.*\)$ADB\(.*\)$/mv \"&\" \"\1$DB\2\"/" | sh # Renomme les fichiers find . -print | grep $ADB | sed "s/\(.*\)$ADB\(.*\)$/mv \"&\" \"\1$DB\2\"/">>mv.log find . -print | grep $ADB | sed "s/\(.*\)$ADB\(.*\)$/mv \"&\" \"\1$DB\2\"/" | sh # cat mv.log
Il me faut maintenant modifier le contenu d'un fichier qui a l'aspect suivant :
Je ne sais pas vraiment comment procéder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Ligne à supprimer ... .. (1 à i lignes) ... Ligne à supprimer STARTUP NOMOUNT #dernière ligne a supprimer [Contenu à conserver] ... .. (1 à j lignes) ... [Contenu à conserver] CHARACTER SET WE8ISO8859P1 ; #dernière ligne a conserver Ligne à supprimer ... .. (1 à k lignes) ... Ligne à supprimer ALTER TABLESPACE [..] ADD TEMPFILE [..] Fin du texte a supprimer
Je pensais lire le fichier ligne par ligne jusqu'à la lecture de certains mots clefs, rediriger les lignes suivantes dans un fichier jusqu'à lecture des mots clefs suivants.
Cette méthode me pose toutefois quelques problèmes :
- Les paragraphes encadrer par mes lignes clefs peuvent avoir plusieurs occurences et je ne souhaite garder que la première
- Le contenu à conserver ne doit pas être impacter par mes conditions
- Je ne sais pas quel méthode utiliser pour lire mon fichier ligne par ligne
De plus, il existe peut-être une solution plus simple que celle que j'envisage.
Je vous demande donc un avis sur la question plutôt qu'un bout de shell clef en main.
Partager