【问题标题】:Lining up columns using awk使用 awk 排列列
【发布时间】:2014-03-13 04:43:32
【问题描述】:

我正在尝试使用 awk 从包含 210 列的数据集中提取每 9 列。如果每列中的数据不包含相同数量的字符,如何使列均匀排列?

【问题讨论】:

  • 在 awk 中执行此操作并将在以固定宽度字体呈现时看起来排列整齐的内容写入标准输出是否重要?如果没有,只需用 awk 写出您的数据,用引号和逗号分隔,然后在电子表格程序中打开并从那里打印出来。 :)
  • 谢谢!我要试试看:)
  • 不确定我是否理解这个问题 - 在 awk 中,您不需要排列输入列,您只需要正确定义可以使用哪个正则表达式来分隔它们。
  • 你能举个例子吗?我不太了解要求....

标签: awk multiple-columns


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多