雕虫小技 使用awk printf优化jps的输出

前戏

对于Java程序员来说,经常需要查看运行中的Java进程,命令ps -ef | grep java提供了很详细的进程信息,相比之下jps的输出要简洁一些。如果你只需要查看进程名字和进程号,jps是个很不错的选择。

然而,这个输出实在是杂乱无章,对于我等重度强迫症患者,不优化它简直天理难容。

过程

  1. 过滤掉Jps进程 grep -v Jps

  1. 将进程名与进程号位置掉转 awk '{print $2 " " $1}'

  1. 按照进程名排序 sort

    这样看起来已经好多了,不过强迫症可没那么容易满足,继续……

  2. 再把进程号和进程名掉换一下位置 awk '{printf "%s %s\n", $2, $1}'

    怎么感觉又不顺眼了呢?Be patient,we almost there!

  3. 给进程号一个固定长度 awk '{printf "%8s %s\n", $2, $1}'

    Very good!强迫症已经基本痊愈了!

  4. 再添加个行号不是更完美? awk '{printf "%2d %8s %s\n", NR, $2, $1}'

    好了,就这样!Perfect!不过,每次都要输入这么长一串?No way!

高潮

  1. .bashrc中为jps添加alias,注意要对特殊符号做转义。

    source .bashrc使之生效。

  2. 检验结果:

    大功告成!

回味

  • 学习grep以及zgrep的用法
  • 学习awkprintprintf的用法
  • awk打印行号:print NR
  • awk打印整行:print $0