Bash 使用awk在csv文件中浮动

Bash 使用awk在csv文件中浮动,bash,awk,Bash,Awk,我的csv中有一个类似的列: Last Mont Evolution (%) 0.00% 4.35% 4.17% 0.00% 7.29% 6.21% 4.10% 0.00% -0.03% 2.78% 2.46% -1.09% 19.18% 12.32% 我想提取高于4%的值,因此我执行以下操作: awk '$1>4 {print $1}' file.csv | sort -r -n 输出为:7.29%6.21%4.35%4.17%4.10% 但是值19.18%和12.32%在哪里 你能

我的csv中有一个类似的列:

Last Mont Evolution (%)
0.00%
4.35%
4.17%
0.00%
7.29%
6.21%
4.10%
0.00%
-0.03%
2.78%
2.46%
-1.09%
19.18%
12.32%
我想提取高于4%的值,因此我执行以下操作:

awk '$1>4 {print $1}' file.csv | sort -r -n
输出为:
7.29%6.21%4.35%4.17%4.10%

但是值
19.18%
12.32%
在哪里


你能帮我吗?

因为有百分号,你在处理字符串。告诉
awk
sort
使用百分比作为分隔符,一切正常:

awk -F% '$1>4 {print $1}' file.csv | sort -t% -r -n
输出:

19.18
12.32
7.29
6.21
4.35
4.17
4.10

您不必执行
-F%
,您可以让awk将字符串“转换”为数字:

awk '$0+0>4' file

这将输出大于
4%
的所有百分比。如果要对输出进行排序,请通过管道进行排序。如果没有数字,则有字符串,因为
%
不是数字。在这种情况下,
awk
正在进行字符串比较,字符串
1
(19.18%的第一个字符)不“大于”4。