linux系统中awk命令for循环提取⽂件的连续列
1、测试数据
[root@centos7 test2]#
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
2、提取1-3列,1-5列
[root@centos7 test2]#
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
[root@centos7 test2]# awk '{for (i = 1; i <= 3; i++) printf("%s ", $i); printf("\n")}' a.txt
e d g
s d g
a x d
n d i
[root@centos7 test2]# awk '{for (i = 1; i <= 5; i++) printf("%s ", $i); printf("\n")}' a.txt
e d g e d
s d g w e
a x d g i
n d i d o
3、提取1-3列加第6列,1-3列加5-6列
[root@centos7 test2]#
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
[root@centos7 test2]# awk '{for(i = 1; i <= 3; i++) printf("%s ", $i); print $6}' a.txt
e d g w
s d g i
a x d w
n d i e
[root@centos7 test2]# awk '{for(i = 1; i <= 3; i++) printf("%s ", $i); print $5,$6}' a.txt
e d g d w
s d g e i
a x d i w
n d i o e
4、提取奇数列
[root@centos7 test2]#
1234567
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
[root@centos7 test2]# awk '{for (i = 1; i <= NF; i+=2) printf("%s ", $i); printf("\n")}' a.txt
1357
e g d i
s g e d
a d i e
n i o w
[root@centos7 test2]# awk '{for (i = 1; i <= NF; i++) if (i % 2 != 0) printf("%s ", $i); printf("\n")}' a.txt
1357
e g d i
s g e d
a d i e
n i o w
5、提取偶数列
[root@centos7 test2]#
1234567
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
[root@centos7 test2]# awk '{for(i = 2; i <= NF; i+=2) printf("%s ", $i); printf("\n")}' a.txt
246
d e w
d w i
x g w
d d e
[root@centos7 test2]# awk '{for(i = 1; i <= NF; i++) if (i % 2 == 0) printf("%s ", $i); printf("\n")}' a.txt 246
d e w
d w i
x g w
d d e
5、提取3倍数列
[root@centos7 test2]#
1234567
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
[root@centos7 test2]# awk '{for (i = 1; i <= NF; i++) if (i % 3 == 0) printf("%s ", $i); printf("\n")}' a.txt 36
g w
g i
d w
i e
6、提取倒数后4列、后5列
[root@centos7 test2]#
1234567
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
[root@centos7 test2]# awk '{for (i = NF - 3; i <= NF; i++) printf("%s ", $i); printf("\n")}' a.txt
4567
e d w i
w e i d
g i w e
d o
e w
[root@centos7 test2]# awk '{for (i = NF - 4; i <= NF; i++) printf("%s ", $i); printf("\n")}' a.txt 34567
g e d w i
g w e i d
d g i w e
i d o e w
7、去倒数5列中的偶数列
[root@centos7 test2]#
1234567
e d g e d w i
s d g w e i d
a x d g i w e
n d i d o e w
[root@centos7 test2]# awk '{for (i = NF - 4; i <= NF; i++) if (i % 2 == 0) printf("%s ", $i); printf("\n")}' a.txt 46
e w
w i
g wlinux登录命令
d e

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。