如何将更改应用于AIX中许多文件中的某些行?

我有85个具有此类行的文件:

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/

所需的输出:

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;/
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/

我尝试这样做(我将grep设置为“ 2019-10”,因为文件名中有日期,并且我只对文件名中带有“ 2019-10”的文件感兴趣):

for i in $(ls *.txt | grep "2019-10")
do 
awk -F';' -vOFS=';' '/2019-10-29-12-00/{$4=$3-$4;} 1' $i > BACK-$i
done

但是它不起作用...而且我也不知道为什么!你能告诉我怎么做吗?

dhtz_123 回答:如何将更改应用于AIX中许多文件中的某些行?

尝试一下:

for i in *2019-10*.txt; do
    awk 'BEGIN{FS=OFS=";"}/2019-10-29-(06|12)-00/{$4=$3-$4}1' "${i}" >"BACK-${i}"
done

上面的代码将使行与2019-10-29-匹配,后跟06-0012-00,如示例输出中所示。

如果您需要匹配06-0012-000范围内的所有行,请使用以下脚本:

 for i in *2019-10*.txt; do
    awk 'BEGIN{FS=OFS=";"}/2019-10-29-(0[6-9]|1[0-2])-00/{$4=$3-$4}1' "${i}" >"BACK-${i}"
done

我希望它现在能满足您的要求。

,

此脚本可以完成工作:

awk -F';' -vOFS=';' '/2019-10-29-12-00/{$4=$3-$4; print} '

我不知道为什么最后的1不想在您的情况下起作用

本文链接:https://www.f2er.com/3028225.html

大家都在问