有这样一个文本,需要截取前5行
[root@SH]# cat test.txt
2 3651415576 940761 0 0 0000000000000000
3 3532686312 939551 0 0 0000000000000000
4 3873453656 984285 0 0 0000000000000000
5 3884604640 970761 0 0 0000000000000000
6 2116906224 493295 0 0 0000000000000000
7 1760674752 480700 0 0 0000000000000000
8 0 0 29979808 6002 0000000000000000
10 0 0 3299944 1433 0000000000000000
11 0 0 2199434640 312565 0000000000000000
可以awk '{print $1,$2,$3,$4,$5}
另外一种实现方法awk '{NF-=2}1',这里的1换成别的数字也可以,NF-=2表示倒数第二列
[root@SH]# cat test.txt |awk '{NF-=2}1' 2 3651415576 940761 0 3 3532686312 939551 0 4 3873453656 984285 0 5 3884604640 970761 0 6 2116906224 493295 0 7 1760674752 480700 0 8 0 0 29979808 10 0 0 3299944 11 0 0 2199434640
如果想把多行合成一行,这就是要去掉换行符,可以用xargs
[root@SH-]# cat test.txt |awk '{NF-=2}1'|xargs 2 3651415576 940761 0 3 3532686312 939551 0 4 3873453656 984285 0 5 3884604640 970761 0 6 2116906224 493295 0 7 1760674752 480700 0 8 0 0 29979808 10 0 0 3299944 11 0 0 2199434640