awk吧 关注:104贴子:293
  • 2回复贴,共1

akw脚本中运用sort的问题

只看楼主收藏回复

本人新手,不了解脚本的排序语法,我想在一个脚本中按照第5个字段的数值大小进行逆向排序排序,可是运行如下代码之后输出结果并没有排序,求高手指教!
#!/usr/bin/awk -f
BEGIN {
FS="|"
}
{
if(($1=="1"||$1=="2")&&($3=="1"||$3=="3"||$3=="4"))
print $5,"|",$1,"|",$2,"|",$3,"|",$4,"|">"screen.txt"
sort -rn;
}
END {
}


1楼2013-07-08 10:47回复
    sort.awk
    #!/usr/bin/awk -f
    BEGIN {
    FS="|"
    }
    {
    if(($1=="1"||$1=="2")&&($3=="1"||$3=="3"||$3=="4"))
    print $5"|"$1"|"$2"|"$3"|"$4
    }
    注:原始版本的awk并没有内置的sort函数,在gawk的3.1以后的版本,扩展提供了对数组的sort功能:asort和asorti函数, 但不是用得很方便 ,所以采用linux的sort命令会比较方便
    命令行:cat 原始文件 |awk -f sort.awk (上面的文件) |sort -nr -t"|" >secret.txt
    sort 是可以直接 按第5行直接排序的,sort -nr -k5 -t"|" 就是第5列了


    IP属地:北京2楼2013-07-08 13:11
    回复


      IP属地:天津3楼2013-07-08 13:17
      回复