gpt4 book ai didi

awk - 使用 awk 或 cut 命令重新排列列

转载 作者:行者123 更新时间:2023-12-04 22:07:45 27 4
gpt4 key购买 nike

我有一个包含 1000 列的大文件。我想重新排列,以便最后一列应该是第 3 列。为此我用过,

cut -f1-2,1000,3- file > out.txt

但这不会改变顺序。

有人可以帮忙使用 cut 或 awk 吗?

此外,我想重新排列第 10 列和第 11 列,如下所示:

例子:

1   10   11   2   3   4   5   6   7   8   9   12  13  14  15  16  17  18  19  20

最佳答案

试试这个 awk 单行代码:

awk '{$3=$NF OFS $3;$NF=""}7' file

这是将最后一栏移到第三栏。如果您有 1000 个,那么它会处理第 1000 个列。

编辑

如果文件是制表符分隔的,您可以尝试:

awk -F'\t' -v OFS="\t" '{$3=$NF OFS $3;$NF=""}7' file

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

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

毕竟我们可以循环打印这些字段。

关于awk - 使用 awk 或 cut 命令重新排列列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com