Как переписать несколько строк из файлов в AIX? - PullRequest
0 голосов
/ 31 октября 2019

У меня много файлов, таких как:

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/

Я бы хотел вычесть поля $ 3 и $ 4 с начала файла до последней строки, включая шаблон "2019-10-29-12-00 ". Кто-то с этого сайта дал мне эту команду:

sed '/2019-10-29-12-00/{:a;n;//ba;Q}' file.txt 

И я могу делать то, что хочу, если я добавлю awk -F';' '{print $1";"$2";"$3";"($3 - $4)";"$5}' к этой команде sed ...

Явозможность переписать с linux и флагом -i для sed, но этот флаг не существует в AIX ... Итак, как мне переписать все строки от начала до последних строк с шаблоном "2019-10-29-12-00 "без удаления остальных строк?

1 Ответ

0 голосов
/ 06 ноября 2019

С помощью awk вы можете сделать это следующим образом

awk -F';' '{if ($1=="2019-10-29-12-00")  print $1";"$2";"$3";"($3 - $4)";"$5; else print}' input_file >output
mv output input_file
...