Chinaunix

标题: 求一个shell的文本处理 [打印本页]

作者: bottles    时间: 2014-01-27 16:06
标题: 求一个shell的文本处理
文本如下:
  1. Processing cluster.conf on local host n037
  2. [$Z000EP0] %node  info
  3. [$Z000EP0] Logical Nodes    = 4
  4. [$Z000EP0] Physical Nodes   = 4
  5. [$Z000EP0] Spare Nodes      = 0
  6. [$Z000EP0] Available Spares = 0
  7. [$Z000EP0] NID Type        State    Processors   #Procs
  8. [$Z000EP0]     PNID        State        #Cores  MemFree SwapFree CacheFree Name
  9. [$Z000EP0] --- ----------- -------- ---------- -------- -------- --------- --------
  10. [$Z000EP0] 000 Any         Up                2       76
  11. [$Z000EP0]     000         Up                8  6970140 86759372  12389616 n037
  12. [$Z000EP0] 001 Any         Up                2       74
  13. [$Z000EP0]     001         Up                8  6443048 85819036  11420720 n038
  14. [$Z000EP0] 002 Any         Up                2       72
  15. [$Z000EP0]     002         Up                8  1082884 91181916  20155376 n039
  16. [$Z000EP0] 003 Any         Down   
  17. [$Z000EP0]     003         Down                                            n040
复制代码
输出格式如下:
n037 up
n038 up
n039 up
n040 down

如果不想要弄什么循环,这样的输出能一句命令搞定吗?求高手啊。
作者: jason680    时间: 2014-01-27 16:14
本帖最后由 jason680 于 2014-01-27 16:15 编辑

回复 1# bottles

$ awk '{n=substr($0,76,4);if(match(n,/n[0-9]+/))print n,substr($0,28,4)}' FILE
n037 Up  
n038 Up  
n039 Up  
n040 Down
作者: bottles    时间: 2014-01-27 16:21
回复 2# jason680


    膜拜高手,谢谢。
作者: jackhuntcn    时间: 2014-01-27 16:33
本帖最后由 jackhuntcn 于 2014-01-27 16:36 编辑
  1. awk '$NF ~ /n[0-9]{3}/ && NR!=1 {print $NF,$3}' urfile
复制代码

作者: jiejie455    时间: 2014-01-27 16:56
awk '/Any[ \t]*[UD]/{getline;print $NF,$3}' data
作者: rulebook    时间: 2014-01-28 09:48
  1. awk '$NF~/n[0-9]+/&&$3~/Up|Down/{print $NF" "$3}' oo
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2