我有1000列的大文件.我想重新排列,以便最后一列应该是第3列.我用过这个,
cut -f1-2,1000,3- file > out.txt
Run Code Online (Sandbox Code Playgroud)
但这不会改变秩序.
任何人都可以帮助使用cut或awk吗?
另外,我想重新排列第10列和第11列,如下所示:
例:
1   10   11   2   3   4   5   6   7   8   9   12  13  14  15  16  17  18  19  20
Run Code Online (Sandbox Code Playgroud)
    尝试这个awk单行:
awk '{$3=$NF OFS $3;$NF=""}7' file
Run Code Online (Sandbox Code Playgroud)
这是将最后一个col移动到第3列.如果你有1000,那么它用1000th col.
编辑
如果文件是制表符分隔的,您可以尝试:
awk -F'\t' -v OFS="\t" '{$3=$NF OFS $3;$NF=""}7' file
Run Code Online (Sandbox Code Playgroud)
EDIT2
添加一个例子:
kent$  seq 20|paste -s -d'\t'                              
1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20
kent$  seq 20|paste -s -d'\t'|awk -F'\t' -v OFS="\t" '{$3=$NF OFS $3;$NF=""}7'
1   2   20  3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  
Run Code Online (Sandbox Code Playgroud)
EDIT3
您没有提供任何输入示例.所以假设您在原始文件中没有空列.(没有连续的多标签):
kent$  seq 20|paste -s -d'\t'|awk -F'\t'  -v OFS="\t" '{$3=$10 FS $11 FS $3;$10=$11="";gsub(/\t+/,"\t")}7'
1       2       10      11      3       4       5       6       7       8       9       12      13      14      15      16      17      18      19      20
Run Code Online (Sandbox Code Playgroud)
毕竟我们可以在循环中打印这些字段.