今天偶然研究awk,有一个文件,文件内容是全篇的1 2 3 4 5 6 7 8 9 0
现在想打印除了第一列以外的所有列
文件内容:
[root@localhost ~]# cat test.txt
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
执行代码:
awk '{ $1=""; print $0 }' test.txt
执行的结果是:
[root@localhost ~]# awk '{ $1=""; print $0 }' test.txt
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
发现,果然少了第一列
但是如果想少去第二列,可以将$1修改为$2
[root@localhost ~]# awk '{ $2=""; print $0 }' test.txt
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
1 3 4 5 6 7 8 9 0
同样,最后一列的话,可以把$2修改为$NF
[root@localhost ~]# awk '{ $NF=""; print $0 }' test.txt
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
还有一种方法是在awk中写一个循环即可
[root@localhost ~]# awk '{ for(i=1; i<=1; i++){ $i="" }; print $0 }' test.txt
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0
同样,如果你想输出$6到最后的话,可以这样写
[root@localhost ~]# awk '{ for(i=1; i<=5; i++){ $i="" }; print $0 }' test.txt
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0
6 7 8 9 0