awk中打印连续多列,或者删除多列的技巧


问题:比如有一个文件是20列,你只要后面的18列,怎么打印。

方法:把第一列和第二列做空;用print打印

[wangjq@mgmt humandb]$ cat test
1 2 3 4 5 6 7 8 9 10 
[wangjq@mgmt humandb]$ awk '{$1="";$2="";print $0}' test
  3 4 5 6 7 8 9 10

这种方法有个问题:就是第一列和第二列并没有消失,只是为空。

 

方法2:循环打印;用printf打印

[wangjq@mgmt humandb]$ cat test
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
[wangjq@mgmt humandb]$ awk '{for(i=3;i<11;i=i+1){printf $i" "};printf "\n"}' test|head
3 4 5 6 7 8 9 10 
3 4 5 6 7 8 9 10 

  

print和printf两者的区别:

用print打印,会在打印结束后加上"\n"

用printf打印,后面不会添加任何符号

 

参考:

http://blog.csdn.net/liuxiao723846/article/details/55003749

http://blog.itpub.net/27181165/viewspace-775817/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM