awk else 语句无法将列中的字节转换为 mb 和 gb 和 tb
awk else statement not working converting bytes in column to mb and gb and tb
尝试根据 if else 将列中的字节重新格式化为 mb 和 gb。
在我的数据中,最后一列是以字节为单位的大小。想要将字节转换为 mb 和 gb。如果小于 1gb(1073741824 字节)转换为 mb 并附加 MB,如果等于或大于 1gb 则转换为 gb 并附加 GB
awk -F ',' '{if ($NF >= "1073741824") {$NF=$NF/1024/1024/1024; gsub(/.*/, "&GB", $NF)} else { $NF=$NF/1024/1024; gsub(/.*/, "&MB", $NF)}}1'
但是 else 语句不起作用。如果字节大于或等于 1gb,则将其转换为 gb,否则转换为 mb。
一个普遍的问题是有条件的;当前代码在应该执行数字比较时执行字符串比较。
考虑:
# string comparison ( >= "300")
$ echo 100000 | awk '{if ( >= "300") print "greater than 300"}'
- returns nothing
# numeric comparison ( >= 300)
$ echo 100000 | awk '{if ( >= 300) print "greater than 300"}'
greater than 300
将其滚动到 OP 的代码中(从 1073741824
:
周围删除双引号
# old:
awk -F ',' '{if ($NF >= "1073741824") {$NF=$NF/1024/1024/1024; gsub(/.*/, "&GB", $NF)} else { $NF=$NF/1024/1024; gsub(/.*/, "&MB", $NF)}}1'
^^^^^^^^^^^^
# new:
awk -F ',' '{if ($NF >= 1073741824 ) {$NF=$NF/1024/1024/1024; gsub(/.*/, "&GB", $NF)} else { $NF=$NF/1024/1024; gsub(/.*/, "&MB", $NF)}}1'
^^^^^^^^^^
如果当前代码的这种编辑没有解决问题,那么请使用更新的代码、样本输入、代码生成的(错误的)输出和(正确的)预期输出来更新问题。
尝试根据 if else 将列中的字节重新格式化为 mb 和 gb。
在我的数据中,最后一列是以字节为单位的大小。想要将字节转换为 mb 和 gb。如果小于 1gb(1073741824 字节)转换为 mb 并附加 MB,如果等于或大于 1gb 则转换为 gb 并附加 GB
awk -F ',' '{if ($NF >= "1073741824") {$NF=$NF/1024/1024/1024; gsub(/.*/, "&GB", $NF)} else { $NF=$NF/1024/1024; gsub(/.*/, "&MB", $NF)}}1'
但是 else 语句不起作用。如果字节大于或等于 1gb,则将其转换为 gb,否则转换为 mb。
一个普遍的问题是有条件的;当前代码在应该执行数字比较时执行字符串比较。
考虑:
# string comparison ( >= "300")
$ echo 100000 | awk '{if ( >= "300") print "greater than 300"}'
- returns nothing
# numeric comparison ( >= 300)
$ echo 100000 | awk '{if ( >= 300) print "greater than 300"}'
greater than 300
将其滚动到 OP 的代码中(从 1073741824
:
# old:
awk -F ',' '{if ($NF >= "1073741824") {$NF=$NF/1024/1024/1024; gsub(/.*/, "&GB", $NF)} else { $NF=$NF/1024/1024; gsub(/.*/, "&MB", $NF)}}1'
^^^^^^^^^^^^
# new:
awk -F ',' '{if ($NF >= 1073741824 ) {$NF=$NF/1024/1024/1024; gsub(/.*/, "&GB", $NF)} else { $NF=$NF/1024/1024; gsub(/.*/, "&MB", $NF)}}1'
^^^^^^^^^^
如果当前代码的这种编辑没有解决问题,那么请使用更新的代码、样本输入、代码生成的(错误的)输出和(正确的)预期输出来更新问题。