算术运算时用awk打印0
Print 0 with awk while doing arithmetic operation
我有一个file1.txt,内容如下
value1=value2=value3=server2=150=200=Running=0
value1=value2=value3=server5=0=100=Running=0
value1=value2=value3=server3=40=100=Running=0
value1=value2=value3=server8=175=100=Running=0
value1=value2=value3=server1=0=100=Running=0
value1=value2=value3=server7=0=100=Running=0
我正在第 5 列和第 6 列之间进行算术运算,将等于 (=) 作为字段分隔符。代码如下
awk -F "=" '=((*100/))' file1.txt
但是当我使用上面的代码并将结果附加到最后一列时,它只在值不为 0 的情况下给出结果,但我也需要那些值为 0 的行。我还想对行进行排序基于最后一列值的降序。
下面是我得到的结果
vlaue1 value2 value3 server2 150 200 Running 0 75
vlaue1 value2 value3 server3 40 100 Running 0 40
vlaue1 value2 value3 server8 175 200 Running 0 87.5
预期结果如下
vlaue1 value2 value3 server8 175 200 Running 0 87.5
vlaue1 value2 value3 server2 150 200 Running 0 75
vlaue1 value2 value3 server3 40 100 Running 0 40
value1 value2 value3 server5 0 100 Running 0 0
value1 value2 value3 server1 0 100 Running 0 0
value1 value2 value3 server7 0 100 Running 0 0
请帮助我如何实现这一目标。
您应该明确打印每一行。另外如果你想稍后对其进行排序,你可以使用这个解决方案:"How to numerically sort by last column"。例如:
awk -F "=" '{=*100/; print " "[=10=]}' file1.txt | sort -nr | cut -f2- -d' '
运行 如下。最后注意1.
awk -F "=" '{=((*100/))}1' file.txt|sort -nrk9
解释见
我有一个file1.txt,内容如下
value1=value2=value3=server2=150=200=Running=0
value1=value2=value3=server5=0=100=Running=0
value1=value2=value3=server3=40=100=Running=0
value1=value2=value3=server8=175=100=Running=0
value1=value2=value3=server1=0=100=Running=0
value1=value2=value3=server7=0=100=Running=0
我正在第 5 列和第 6 列之间进行算术运算,将等于 (=) 作为字段分隔符。代码如下
awk -F "=" '=((*100/))' file1.txt
但是当我使用上面的代码并将结果附加到最后一列时,它只在值不为 0 的情况下给出结果,但我也需要那些值为 0 的行。我还想对行进行排序基于最后一列值的降序。
下面是我得到的结果
vlaue1 value2 value3 server2 150 200 Running 0 75
vlaue1 value2 value3 server3 40 100 Running 0 40
vlaue1 value2 value3 server8 175 200 Running 0 87.5
预期结果如下
vlaue1 value2 value3 server8 175 200 Running 0 87.5
vlaue1 value2 value3 server2 150 200 Running 0 75
vlaue1 value2 value3 server3 40 100 Running 0 40
value1 value2 value3 server5 0 100 Running 0 0
value1 value2 value3 server1 0 100 Running 0 0
value1 value2 value3 server7 0 100 Running 0 0
请帮助我如何实现这一目标。
您应该明确打印每一行。另外如果你想稍后对其进行排序,你可以使用这个解决方案:"How to numerically sort by last column"。例如:
awk -F "=" '{=*100/; print " "[=10=]}' file1.txt | sort -nr | cut -f2- -d' '
运行 如下。最后注意1.
awk -F "=" '{=((*100/))}1' file.txt|sort -nrk9
解释见