У меня есть файл, который выглядит примерно так:
column1 column2 column3 column4 column5 column6 Warn=3000
column1 column2 column3 column4 column5 Warn=200
column1 column2 column3 column4 column5 column6 column7 Warn=40000
column1 column2 column3 column4 Warn=100
column1 column2 column3 column4 column5 Warn=20000
column1 column2 column3 column4 Warn=15000
Как видно, количество полей меняется в каждой строке, но последнее поле всегда "Warn =", за которым следуетчисло.Я в основном хочу напечатать все строки, где за строкой «Warn =» следует число больше 10000, и отсортировать их от наибольшего числа к низшему.
Таким образом, результат должен выглядеть следующим образом:
column1 column2 column3 column4 column5 column6 column7 Warn=40000
column1 column2 column3 column4 column5 Warn=20000
column1 column2 column3 column4 column5 Warn=15000
До сих пор мне удавалось достичь желаемого с помощью grep, awk и sort:
grep -E 'Warn=[0-9]{5}' file.txt | awk '{ print $NF, $0 }' | sort -rn -k1 | sed 's/Warn=[0-9]* //'
Есть ли более простой способ сделать это только с помощью awk?