|
|
|
|
Bonjour,
Je souhaiterai effectué un système d’éclatement d’un fichier d’édition je travail sur un sun AIX 5.
Exemple de fichier sous le nom EDITION-AVT :
100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
hjhjhjhjhjhjjhjjhj
hfghghgfhg
yutuytuytuytu
100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
lkfsdtmoîobcbc
45454h45ttrhyujh
fgrdrtytu74778kuj
trhrrthrth547877hg
200 : 4879 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
dsdsdsdsdsdsdsdsdsdsdsdsds
dsdsdsdsdsdsdsdsdsdsdsdsds
dsdsdsdsdsdsdsdsdsdsdsdsds
400 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
hjtruyityukrklyuiupoioiph
rghtjreghjrejhgreghbfvklfdjgilreil
njhrekhtreutyreytgfbnkjdfhguerhtygndfjghuit
100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
truhjtrjn547tyvnc
cyutryyivchh54444h54577trh
tkjlhjhfghefrkljgi45647ytr
800 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
hljtrioyuiotruyiortuyio
kyhtiuytiouyiotuyiortu
jyhiotrjoyitrioyuoitry
Dans l’exemple suivant je veux récupérer dans un fichier les ligne commencent par 100 : 2222 et la suite jusqu’au prochain 100 : 2222 cela donnera donc dans le nouveau fichier sous le nom EDITION-APR1 :
100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
hjhjhjhjhjhjjhjjhj
hfghghgfhg
yutuytuytuytu
100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
lkfsdtmoîobcbc
45454h45ttrhyujh
fgrdrtytu74778kuj
trhrrthrth547877hg
100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
truhjtrjn547tyvnc
cyutryyivchh54444h54577trh
tkjlhjhfghefrkljgi45647ytr
Le fichier EDITION-AVT ne doit plus contenir les lignes du nouveau fichier le résultat doit être le suivant :
200 : 4879 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
dsdsdsdsdsdsdsdsdsdsdsdsds
dsdsdsdsdsdsdsdsdsdsdsdsds
dsdsdsdsdsdsdsdsdsdsdsdsds
400 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmm
800 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
hljtrioyuiotruyiortuyio
kyhtiuytiouyiotuyiortu
jyhiotrjoyitrioyuoitry
Ensuite je dois traiter les autres dans un autre fichier EDITION-APR2, EDITION-APR3…etc :
200 : 4879 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
400 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
800 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
A savoir :
La seule ligne fixe c’est la 1ere ligne :
100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
ou bien
200 : 4879 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
ou bien
400 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
Si quelqu’un à une petite idée de la façon de faire merci de votre aide.
A+
Configuration: AIX V5
Salut,
[tmpfs]$ ls EDITION-AVT [tmpfs]$ cat EDITION-AVT 100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm hjhjhjhjhjhjjhjjhj hfghghgfhg yutuytuytuytu 100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm lkfsdtmoîobcbc 45454h45ttrhyujh fgrdrtytu74778kuj trhrrthrth547877hg 200 : 4879 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm dsdsdsdsdsdsdsdsdsdsdsdsds dsdsdsdsdsdsdsdsdsdsdsdsds dsdsdsdsdsdsdsdsdsdsdsdsds 400 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm hjtruyityukrklyuiupoioiph rghtjreghjrejhgreghbfvklfdjgilreil njhrekhtreutyreytgfbnkjdfhguerhtygndfjghuit 100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm truhjtrjn547tyvnc cyutryyivchh54444h54577trh tkjlhjhfghefrkljgi45647ytr 800 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm hljtrioyuiotruyiortuyio kyhtiuytiouyiotuyiortu jyhiotrjoyitrioyuoitry [tmpfs]$ sed -n '/100 :/,/^$/w EDITION-APR1 /200 :/,/^$/w EDITION-APR2 /400 :/,/^$/w EDITION-APR3 /800 :/,/^$/w EDITION-APR4 ' EDITION-AVT [tmpfs]$ ls EDITION-APR1 EDITION-APR2 EDITION-APR3 EDITION-APR4 EDITION-AVT [tmpfs]$ cat EDITION-APR1 100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm hjhjhjhjhjhjjhjjhj hfghghgfhg yutuytuytuytu 100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm lkfsdtmoîobcbc 45454h45ttrhyujh fgrdrtytu74778kuj trhrrthrth547877hg 100 : 2222 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm truhjtrjn547tyvnc cyutryyivchh54444h54577trh tkjlhjhfghefrkljgi45647ytr [tmpfs]$ cat EDITION-APR2 200 : 4879 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm dsdsdsdsdsdsdsdsdsdsdsdsds dsdsdsdsdsdsdsdsdsdsdsdsds dsdsdsdsdsdsdsdsdsdsdsdsds [tmpfs]$ cat EDITION-APR3 400 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm hjtruyityukrklyuiupoioiph rghtjreghjrejhgreghbfvklfdjgilreil njhrekhtreutyreytgfbnkjdfhguerhtygndfjghuit [tmpfs]$ cat EDITION-APR4 800 : 5678 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm hljtrioyuiotruyiortuyio kyhtiuytiouyiotuyiortu jyhiotrjoyitrioyuoitry [tmpfs]$;-)) JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |
Bonjour,
|
Bon en partant sur le fichier collé ci-dessus (numéroté donc), et en considérant qu'il y a toujours 2 lignes vides (à l'exception des numéros) entre les différentes parties, voilà la nouvelle syntaxe (/!\ par contre il faut qu'il y ait aussi impérativement 2 lignes vides en fin de fichiers /!\) : #n
/^[0-9]\{1,\} 100 :/{
:z
N
/\n[0-9]*\n[0-9]*$/! bz
w EDITION-APR1
}
/^[0-9]\{1,\} 200 :/{
:k
N
/\n[0-9]*\n[0-9]*$/! bk
w EDITION-APR2
}
/^[0-9]\{1,\} 999 :/{
:j
N
/\n[0-9]*\n[0-9]*$/! bj
w EDITION-APR3
}Ce code est à mettre dans un fichier (foo.sed par exemple) et doit être appelé de la façon suivante :sed -f foo.sed fichier_a_traiterPar contre si les lignes ne sont pas numérotées, utiliser cette syntaxe : #n
/100 :/{
:z
N
/\n\n$/! bz
w EDITION-APR1
}
/200 :/{
:j
N
/\n\n$/! bj
w EDITION-APR2
}
/999 :/{
:k
N
/\n\n$/! bk
w EDITION-APR3
};-))
JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |
Merci,
|
Pour de plus amples explications, voir Sed - Introduction à SED - Part I
#n # Ne rien afficher sur la sortie standard
/100 :/{ # On matche les lignes commençant par ...
## L'accolade permet de regrouper les commandes à appliquer à
### l'intervalle de lignes matchées
:z # Étiquette
N # Ajouter la ligne suivante dans l'espace de travail
/\n\n$/! bz # Tant que l'espace de travail ne se termine pas
## par un motif équivalent à 2 retours à la ligne,
### on retourne à l'étiquette "z"
w EDITION-APR1 # Si le motif correspond, alors on écrit (w) le contenu
## de l'espace de travail dans le fichier ...
} # Fin du regroupement de commande;-))
JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |
Bonjour,
|
Les 2 commandes (une avec sed l'autre en shell) sont sensées ajouter 2 lignes en fin de fichier (avec "sed" il faut rajouter le switch "-i" pour que ce soit éditer en place sur le fichier lui même. Il faut aussi que ta version de "sed" le supporte) : jp@MDK:~/tmpfs ssh$ cat -n steph
1 ligne 1
2 ligne 2
3 ligne 3
4 ligne 4
5 ligne 5
jp@MDK:~/tmpfs ssh$ sed '${G;G}' steph | cat -n
1 ligne 1
2 ligne 2
3 ligne 3
4 ligne 4
5 ligne 5
6
7
jp@MDK:~/tmpfs ssh$ cat -n steph
1 ligne 1
2 ligne 2
3 ligne 3
4 ligne 4
5 ligne 5
jp@MDK:~/tmpfs ssh$ echo -e "\n" >> steph
jp@MDK:~/tmpfs ssh$ cat -n steph
1 ligne 1
2 ligne 2
3 ligne 3
4 ligne 4
5 ligne 5
6
7
jp@MDK:~/tmpfs ssh$;-))
JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |
Le fichier qui doit contenir les blancs:
|
Salut,
|
Salut,
|
Oui 1000 excuses et merci encore pour ton aide le fichier correspond à celui-ci:
|