2013年4月16日 星期二

UNIX IN NCNU writing awk script

將 ps -ef 的輸出的
  • 第一行砍掉
  • 將同一 user 的 pid 順序印出
$ ps -ef | ./ex5.awk 
klim: 27048 27141 27142
smmsp: 236 12322
daemon: 176
root: 0 1 2 3 52 62 137 160 174 184 185 196 210 215 223 248 260 262 263 292 298 301 310 316 317 319 321 324 325 326 327 341 1755 12321 27046

///////////////////////////////////////////////////////////////////////

這邊耍蠢了,不知道為啥我CALL內建的sort竟然不能用,於是我就自己寫了一個bubble sort來用

其實這邊的for*2可以改成內建的sort使用

#!/bin/awk -f
/^UID/{next}
!/UID/{
name=""
name=$1
user[name]=name
number[name]=number[name]" "$2
}
END{
  answer=""
  for(j in number)
  {
     n=split(number[j],tmp," ")
    for(change1=1;change1<=n;change1++)
    {
      for (change2=1;change2<=n-1;change2++)
      {
        if(tmp[change2]>tmp[change2+1])
        {
         temp=tmp[change2];
         tmp[change2]=tmp[change2+1];
         tmp[change2+1]=temp;
        }
      }
    }
    for(i=1;i<=n;i++)
    {
      if(i>1)
      after[j]=after[j]" "tmp[i]
      else
      after[j]=tmp[i]
    }
  }
  for( i in user )
     printf "%s : %s\n",i,after[i]

沒有留言:

張貼留言