【发布时间】:2014-01-02 01:10:05
【问题描述】:
有以下格式的表格。是否有可能有一个 AWK 脚本以排除仅包含数字“1”的列的方式来格式化表格?
ST L1 L2 L3 L4 L5
ST2 1 1 1 1 1
ST2 1 0 1 0 1
ST3 1 0 1 0 1
ST3 0 0 1 1 1
ST4 1 0 1 0 1
ST5 1 0 1 0 1
ST6 1 0 1 0 1
ST7 0 0 1 1 1
ST8 0 0 1 0 1
ST9 1 0 1 0 1
输出应该如下:
ST L1 L2 L4
ST2 1 1 1
ST2 1 0 0
ST3 1 0 0
ST3 0 0 1
ST4 1 0 0
ST5 1 0 0
ST6 1 0 0
ST7 0 0 1
ST8 0 0 0
ST9 1 0 0
我可以理解如何打印列的逻辑,就像结束块中的 NR 值一样,如果它等于每次找到 1 时应该递增的变量,对于给定列(标题 NR==1 和列 $1 除外),打印该列。我的麻烦在于实际上试图打印最后块中的列,因为我正在尝试使用数组并且我仍在学习 AWK 和数组。我确信有一些聪明的方法可以做到这一点,尽管甚至不使用数组并且只是改变 AWK 查看数据的方式。
【问题讨论】:
-
感谢您的回答,工作良好!现在只是把我的头绕在代码上;)
标签: arrays bash shell unix awk