awk排除某列输出
awk工具在文本处理上非常强大,我们常用的用法是选择某列输出,如print $1,$3。不过在特殊的情况下,也会遇到只排除例个某列,其他列都正常输出 。针对 awk排除某列,这里就做个小总结。
比如我的文件如下:
1[root@361way tmp]# more disk_io
2xvda 1.49 2.37 11.71 10615426 52410436
3xvdb 3.50 6.60 80.08 29535297 358410976
4xvda 0.00 0.00 0.00 0 0
5xvdb 5.05 12.12 72.73 12 72
排除第一列(打印第2列到最后):
1awk '{$1=""; print $0}' 文件名
排除多列:
1awk '{$1=$2=""; print $0}' 文件名
以上这种写法感觉是比较好的,不过如果前面排除的列比较多,且按顺序过来的,可以使用如下的方法 ,比较方便:
1awk '{for(i=2;i
还有其他一些衍生写法如下:
1awk '{sub(/[^ ]+ /, ""); print $0}'
2awk '{$1=$2=$3=""}sub("^"FS"*","")'
3awk -v n=3 '{ for (i=n+1; i
也可以通过一个脚本进行引用搞定,如下:
脚本1:
1[root@361way tmp]# cat cols.sh
2#!/bin/bash
3awk -v s=$1 '{for(i=s; i
进行切分操作的命令如下:
1# cat 文件名 | ./cols.sh 3
2# cat 文件名 | ./cols.sh 5
脚本2:
脚本1还可以做下午简单的修改,变成脚本2,可以指定一个范围,如下:
1#!/bin/bash
2awk -v s=$1 -v e=$2 '{for(i=s; i
使用命令如下:
1echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14" | ./cols.sh 7 9
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/awk-exclude-fields/5154.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.