我尝试使用awk从210列的数据集中拉出每第9列。如果每列中的数据不包含相同数量的字符,如何使列均匀排列?
答案 0 :(得分:0)
使用for loop
跳过您不需要的列:
awk '{
for(i=1;i<=8;i++) {
printf "%s%s",$i,FS
}
for(i=10;i<=NF;i++) {
printf "%s%s",$i,(i==NF?RS:FS)
}
}' file
注意:请相应地设置字段分隔符。你没有说明它是什么,所以我默认(即空间)
样品测试:(跳过第3栏)
$ cat file
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
$ awk '{
for(i=1;i<=2;i++) {
printf "%s%s",$i,FS
}
for(i=4;i<=NF;i++) {
printf "%s%s",$i,(i==NF?RS:FS)
}
}' file
1 2 4 5 6
1 2 4 5 6
1 2 4 5 6