shell scripts and skills

1 .快速从主机名的得到ip地址: 

  
  
  
  
  1. ping -q -c1 centos1 | awk '{print $3}' | sed -n 's/[()]//pg' 

2. 现有文本文件日志:

游戏id   在线时常time   QQ号码

6534    456           37354893

6500    056           564572105

6534    4156         37354893

6500    2456         564572100

……… ………

要求,写shell脚本对改文件按照第二列在线时常排序,然后,统计每个QQ号总共时长和。

解答:第一个问题好解决: sort -rnk2 就可以,第二个问题awk脚本如下,主要使用了关联数组:

  
  
  
  
  1. BEGIN{FS="\t"
  2. {if($1 in time) 
  3. time[$1]=time[$1]+$2 
  4. else time[$1]=$2} 
  5. END {for (i in time) print "the time of qq: "i"is  "time[i]} 

3. 删除一个文件的后几行?

   两个方法:

   head命令有这样的使用方法:

  
  
  
  
  1. [root@localhost shell]# cat t3 
  2. hello 
  3. im luojin 
  4. where are you from ? 
  5. im from aeirica 
  6. oh,very good! 
  7. tks 
  8. [root@localhost shell]# head -n -2 t3 #负数代表不打印后n行 
  9. hello 
  10. im luojin 
  11. where are you from ? 
  12. im from aeirica 

  sed处理,先得到总行数,然后删除:

  
  
  
  
  1. [root@localhost shell]# cat t3 
  2. hello 
  3. im luojin 
  4. where are you from ? 
  5. im from aeirica 
  6. oh,very good! 
  7. tks 
  8. [root@localhost shell]# sed "$(($(cat t3 | wc -l)-1)),\$d" t3 #处理方式,注意这是双引号 
  9. hello 
  10. im luojin 
  11. where are you from ? 
  12. im from aeirica 

4.在一个文件开头添加内容:

  方法有很多,cat、sed(i参数)、awk(BEGIN)都可以实现:

  
  
  
  
  1. [root@localhost shell]# cat t3 
  2. hello 
  3. im luojin 
  4. where are you from ? 
  5. im from aeirica 
  6. oh,very good! 
  7. tks 
  8. [root@localhost shell]# echo "this is add" | cat - t3 
  9. this is add 
  10. hello 
  11. im luojin 
  12. where are you from ? 
  13. im from aeirica 
  14. oh,very good! 
  15. tks 
  16. [root@localhost shell]# sed "1i hello" t3 
  17. hello 
  18. hello 
  19. im luojin 
  20. where are you from ? 
  21. im from aeirica 
  22. oh,very good! 
  23. tks 
  24. [root@localhost shell]# sed "1i\hello" t3 
  25. hello 
  26. hello 
  27. im luojin 
  28. where are you from ? 
  29. im from aeirica 
  30. oh,very good! 
  31. tks 
  32. [root@localhost shell]# sed "1i"hello"" t3 
  33. hello 
  34. hello 
  35. im luojin 
  36. where are you from ? 
  37. im from aeirica 
  38. oh,very good! 
  39. tks 
  40. [root@localhost shell]# awk 'BEGIN{print "this is add"}1' t3 
  41. this is add 
  42. hello 
  43. im luojin 
  44. where are you from ? 
  45. im from aeirica 
  46. oh,very good! 
  47. tks 

5. 有一个文件cat abc
1 10
3 20
1 50
5 20
20 46
5  40


想实现这样的功能:
第一列按照1 3 5 10 20 排序,第二列进行求和.
如果第一列的值不存在,则第二列补充为0.
即最后想要的的结果是:

1 60
3 20
5 60
10 0
20 46

请教怎么解决?

 

你可能感兴趣的:(shell,职场,scripts,休闲,skills)