linux 中 awk命令提取文本最后连续的几列

 

001、 方法1

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
01 02 03 04 05 06 07 08
09 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
[root@PC1 test2]# awk '{for(i = NF - 3; i <= NF; i++) {printf "%s%s", $i, (i == NF)?ORS:OFS}}' a.txt      ## 提取文本最后连续的4列
05 06 07 08
13 14 15 16
21 22 23 24
29 30 31 32
37 38 39 40
[root@PC1 test2]# awk -F " " -v OFS="\t" '{for(i = NF - 3; i <= NF; i++) {printf "%s%s", $i, (i == NF)?ORS:OFS}}' a.txt
05      06      07      08
13      14      15      16
21      22      23      24
29      30      31      32
37      38      39      40

image

.

 

002、方法2 

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
01 02 03 04 05 06 07 08
09 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
[root@PC1 test2]# awk '{for(i = NF - 3; i <= NF; i++) {printf("%s\t",$i)}; printf "\n"}' a.txt | sed 's/\t$//'      ## 截取文本最后的四列
05      06      07      08
13      14      15      16
21      22      23      24
29      30      31      32
37      38      39      40

image

 。

 

posted @ 2025-11-22 10:12  小鲨鱼2018  阅读(10)  评论(0)    收藏  举报