Попробуйте это:
$ awk 'substr($9,1,index($9,"gb")-1) + 0.0 >= 10' file
green open fx-syslog-2019.02.12 jbv1mtuET3e8ps2jrJfpjQ 5 1 25964532 0 19.2gb 9.6gb
green open dfx-syslog-2019.02.13 EfNnTK1lQNm5-SG3DCSqQw 5 1 13378826 0 15.8gb 7.9gb
green open fx-syslog-2019.02.23 WHDwz10jTWibFfKaAdPT0A 5 1 24857467 0 10.6gb 5.3gb
green open dfx-syslog-2019.02.12 ZkZKzeUsQJKod_2JDiIOGw 5 1 13203227 0 15.6gb 7.8gb
green open dfx-syslog-2019.02.10 -qL7Cz2tTAKNBm8gtS8MZw 5 1 13000846 0 15.2gb 7.6gb
green open fx-syslog-2019.02.14 wNMa0id5SkuxnkFdmiG-PA 5 1 19583849 0 14.2gb 7.1gb
green open dfx-syslog-2019.02.16 PoFhIj5OTYSsZPxyN4rgsw 5 1 12343056 0 13.4gb 6.7gb
green open dfx-syslog-2019.02.11 wivt1yfhT5qhjbgF1Iog_Q 5 1 13223543 0 15.6gb 7.8gb
green open dfx-syslog-2019.02.15 azQye17nSpKDnVSSHjVAuw 5 1 13360599 0 15.8gb 7.9gb
green open fx-syslog-2019.02.13 BoDbE8XKRUyHI34Xghoq-w 5 1 25967549 0 20.5gb 10.2gb
green open dfx-syslog-2019.02.14 7gyTk-XPQ7CdTTmmm54zGw 5 1 14040344 0 16.1gb 8gb
Использовал полученный вами вывод как контент file
.
Также предполагается, что нет единицы выше, чем gb
, в противном случае нам нужно ее улучшить.
Он использует substr
для извлечения номера тома, а третий прирост длина был предоставлен index
, который ищет позицию gb
в $9
, и эта позициявсего на 1 больше длины числовой части, поэтому вычтите 1
.
Поскольку извлеченное число на самом деле является строкой, добавьте ее к 0.0
, чтобы преобразовать результат в число с плавающей точкой,затем используйте это число для сравнения с 10
, получая, таким образом, логическое значение .
И логическое значение служит условием, а условие без блока будет иметь {print $0}
подразумевается.
Чтобы учесть более высокие единицы и быть более гибкими:
awk 'BEGIN{s="kmgtp";q[""]=1;for(i=1;i<=length(s);i++)q[substr(s,i,1)]=1024^i;} {n=u=$9;gsub(/[^.0-9]*/,"",n);gsub(/[0-9.b]*/,"",u);} (n+0.0) * q[u] >= 10 * q["g"] '
Этот на самом деле вычисляет число байтов и сравнивает его с 10 ГБ в байтах .
Он охватывает от b
до pb
, вы можете добавить других, еслиВы хотите:)
q
- массив / хэш для хранения номера байтов для различных индексов единиц измерения.Например, q["k"] => 1024
.