shell题一道

刚在linuxtone 见到一个案例,无奈无法回复,只好贴在这里,作为shell题目收集下来。

 

文本如下

 

  
  
  
  
  1. lease 10.127.1.254 { 
  2.   starts 1 2012/08/20 06:58:48; 
  3.   ends 3 2012/09/19 06:58:48; 
  4.   tstp 3 2012/09/19 06:58:48; 
  5.   binding state active; 
  6.   next binding state free; 
  7.   hardware ethernet 11:22:33:44:55:84; 
  8.   uid "\001x+\313C\270\204"; 
  9.   client-hostname "rac-ABCDEF"; 
  10. lease 10.127.1.253 { 
  11.   starts 1 2012/08/20 06:58:48; 
  12.   ends 3 2012/09/19 06:58:48; 
  13.   tstp 3 2012/09/19 06:58:48; 
  14.   binding state active; 
  15.   next binding state free; 
  16.   hardware ethernet 11:22:33:44:55:84; 
  17.   uid "\001x+\313C\270\204"; 
  18.   client-hostname "rac-AAAAA"; 

要求将IP和主机名过滤出来,格式【IP 主机名】

 

已经有大牛提供了办法,但是我还是说下自己的解决思路:

1、利用grep将IP和主机名过滤出来

2、合并行

3、打印

 

全过程

 

  
  
  
  
  1. $ grep 'lease\|hostname' file.txt 
  2. lease 10.127.1.254 { 
  3.   client-hostname "rac-ABCDEF"; 
  4. lease 10.127.1.253 { 
  5.   client-hostname "rac-AAAAA"; 
  6.  
  7. $ grep 'lease\|hostname' file.txt |awk '{print $2}' 
  8. 10.127.1.254 
  9. "rac-ABCDEF"; 
  10. 10.127.1.253 
  11. "rac-AAAAA"; 
  12.  
  13. $ grep 'lease\|hostname' txt |awk '{print $2}' |awk '{if (NR%2==0){print $0} else {printf"%s ",$0}}' 
  14. 10.127.1.254 "rac-ABCDEF"; 
  15. 10.127.1.253 "rac-AAAAA"; 

用的工具不同,步骤可以省略一两步

  
  
  
  
  1. $ awk '/lease/||/client-hostname/{print $2}' new 
  2. 10.127.1.254 
  3. "rac-ABCDEF"; 
  4. 10.127.1.253 
  5. "rac-AAAAA"; 

 

 

 

你可能感兴趣的:(awk)