Bonjour,
Je suis confronté à un problème avec la commande sed.
Voici le type de fichier que j'ai :
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
22
23
24
25
26
27
28
29
30
31
32
33
34 2019-10-29-06-00;/dev/xx;512.00;295.16;/opt/ 2019-10-29-06-00;/dev/xx;128.00;106.54;/var/ 2019-10-29-06-00;/dev/xx;256.00;180.79;/usr/ 2019-10-29-06-00;/dev/xx;384.00;191.13;/var/ 2019-10-29-06-00;/dev/xx;256.00;255.37;/var/ 2019-10-29-06-00;/dev/xx;3200.00;2679.36;/var/opt/ 2019-10-29-06-00;/dev/xx;256.00;255.07;/var/ 2019-10-29-06-00;/dev/xx;64.00;62.67;/etc/ 2019-10-29-06-00;/dev/xx;1664.00;1163.33;/opt 2019-10-29-06-00;/dev/xx;256.00;146.13;/opt/ 2019-10-29-06-00;/dev/xx;2176.00;952.90;/opt/ 2019-10-29-06-00;/dev/xx;22784.00;10353.91;/opt/ 2019-10-29-06-00;/dev/xx;256.00;253.64;/ 2019-10-29-12-00;/dev/xx;256.00;229.92;/home 2019-10-29-12-00;/dev/xx;1024.00;556.73;/opt 2019-10-29-12-00;/dev/xx;256.00;180.79;/usr/ 2019-10-29-12-00;/dev/xx;384.00;190.90;/var 2019-10-29-12-00;/dev/xx;256.00;255.37;/var/ 2019-10-29-12-00;/dev/xx;128.00;127.63;/ 2019-10-29-12-00;/dev/xx;256.00;76.86;/opt/ 2019-10-29-12-00;/dev/xx;2176.00;1682.93;/opt/ 2019-10-29-12-00;/dev/xx;256.00;145.66;/opt/ 2019-10-29-12-00;/dev/xx;2176.00;952.90;/opt/ 2019-10-29-12-00;/dev/xx;22784.00;10421.72;/opt/ 2019-10-29-12-00;/dev/xx;256.00;253.64;/ 2019-10-29-18-00;/dev/xx;1024.00;138.8;/ 2019-10-29-18-00;/dev/xx;5248.00;4230.34;/usr 2019-10-29-18-00;/dev/xx;2560.00;499.37;/var 2019-10-29-18-00;/dev/xx;3584.00;67.79;/tmp 2019-10-29-18-00;/dev/xx;256.00;25.9;/home 2019-10-29-18-00;/dev/xx;1024.00;467.27;/opt 2019-10-29-18-00;/dev/xx;384.00;0.38;/usr/ 2019-10-29-18-00;/dev/xx;256.00;21.36;/ 2019-10-29-18-00;/dev/xx;512.00;216.84;/opt/
Je souhaite, dans mon fichier, ne modifier que les lignes allant du début juqu'à la dernière ligne comprenant 2019-10-29-12-00 pour soustraire la valeur $3 à la valeur $4 et que ce résultat prenne la place de la valeur $4. J'arrive à ne cibler ces lignes qu'avec la commande :
Ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed '/2019-10-29-12-00/{:a;n;//ba;Q}' test2.txt
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
22
23
24
25 2019-10-29-06-00;/dev/xx;512.00;295.16;/opt/ 2019-10-29-06-00;/dev/xx;128.00;106.54;/var/ 2019-10-29-06-00;/dev/xx;256.00;180.79;/usr/ 2019-10-29-06-00;/dev/xx;384.00;191.13;/var/ 2019-10-29-06-00;/dev/xx;256.00;255.37;/var/ 2019-10-29-06-00;/dev/xx;3200.00;2679.36;/var/opt/ 2019-10-29-06-00;/dev/xx;256.00;255.07;/var/ 2019-10-29-06-00;/dev/xx;64.00;62.67;/etc/ 2019-10-29-06-00;/dev/xx;1664.00;1163.33;/opt 2019-10-29-06-00;/dev/xx;256.00;146.13;/opt/ 2019-10-29-06-00;/dev/xx;2176.00;952.90;/opt/ 2019-10-29-06-00;/dev/xx;22784.00;10353.91;/opt/ 2019-10-29-06-00;/dev/xx;256.00;253.64;/ 2019-10-29-12-00;/dev/xx;256.00;229.92;/home 2019-10-29-12-00;/dev/xx;1024.00;556.73;/opt 2019-10-29-12-00;/dev/xx;256.00;180.79;/usr/ 2019-10-29-12-00;/dev/xx;384.00;190.90;/var 2019-10-29-12-00;/dev/xx;256.00;255.37;/var/ 2019-10-29-12-00;/dev/xx;128.00;127.63;/ 2019-10-29-12-00;/dev/xx;256.00;76.86;/opt/ 2019-10-29-12-00;/dev/xx;2176.00;1682.93;/opt/ 2019-10-29-12-00;/dev/xx;256.00;145.66;/opt/ 2019-10-29-12-00;/dev/xx;2176.00;952.90;/opt/ 2019-10-29-12-00;/dev/xx;22784.00;10421.72;/opt/ 2019-10-29-12-00;/dev/xx;256.00;253.64;/
Et soustraire les valeurs :
Ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed '/2019-10-29-12-00/{:a;n;//ba;Q}' test2.txt | awk -F';' '{print $1";"$2";"$3";"($3 - $4)";"$5}'
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
22
23
24
25 2019-10-29-06-00;/dev/xx;512.00;216.84;/opt/ 2019-10-29-06-00;/dev/xx;128.00;21.46;/var/ 2019-10-29-06-00;/dev/xx;256.00;75.21;/usr/ 2019-10-29-06-00;/dev/xx;384.00;192.87;/var/ 2019-10-29-06-00;/dev/xx;256.00;0.63;/var/ 2019-10-29-06-00;/dev/xx;3200.00;520.64;/var/opt/ 2019-10-29-06-00;/dev/xx;256.00;0.93;/var/ 2019-10-29-06-00;/dev/xx;64.00;1.33;/etc/ 2019-10-29-06-00;/dev/xx;1664.00;500.67;/opt 2019-10-29-06-00;/dev/xx;256.00;109.87;/opt/ 2019-10-29-06-00;/dev/xx;2176.00;1223.1;/opt/ 2019-10-29-06-00;/dev/xx;22784.00;12430.1;/opt/ 2019-10-29-06-00;/dev/xx;256.00;2.36;/ 2019-10-29-12-00;/dev/xx;256.00;26.08;/home 2019-10-29-12-00;/dev/xx;1024.00;467.27;/opt 2019-10-29-12-00;/dev/xx;256.00;75.21;/usr/ 2019-10-29-12-00;/dev/xx;384.00;193.1;/var 2019-10-29-12-00;/dev/xx;256.00;0.63;/var/ 2019-10-29-12-00;/dev/xx;128.00;0.37;/ 2019-10-29-12-00;/dev/xx;256.00;179.14;/opt/ 2019-10-29-12-00;/dev/xx;2176.00;493.07;/opt/ 2019-10-29-12-00;/dev/xx;256.00;110.34;/opt/ 2019-10-29-12-00;/dev/xx;2176.00;1223.1;/opt/ 2019-10-29-12-00;/dev/xx;22784.00;12362.3;/opt/ 2019-10-29-12-00;/dev/xx;256.00;2.36;/
Mais là ça s'affiche juste dans mon terminal... Et si je redirige cette commande vers un fichier externe, cela va me créer un fichier qu'avec les lignes modifier. Or, moi je voudrais apporter ces modifications dans mon fichier sans perdre le reste des lignes.
Auriez-vous une solution ?
Merci d'avance !
Partager