【问题标题】:Is there a way to treat a single column of integers as an array in order to extract certain digits?有没有办法将单列整数视为数组以提取某些数字?
【发布时间】:2018-09-27 05:51:08
【问题描述】:

我试图将一系列整数视为一个数组,以提取感兴趣的“列”。

提取一列整数后的数据如下所示:

01010101010
10101010101
00100111100
10111100000
01011000100

如果我只对第 1、4 和 11 个整数感兴趣,我希望输出如下所示:

010
101
000
110
010

这个问题很难用语言来描述,所以我很抱歉没有说清楚。我尝试了很多建议,但是awk的substr()等很多东西都无法跳过位置(比如这里的第1、第4、第11个位置)。

【问题讨论】:

    标签: bash shell unix awk


    【解决方案1】:

    您可以使用cut 命令:

    cut -c 1,4,11 file
    

    -c 只选择字符。

    或使用 (gnu) awk:

    awk '{print $1 $4 $11}' FS= file
    

    FS 是字段分隔符,设置为空以捕获每个字符。

    【讨论】:

    • cut 是一个好方法。将 FS 设置为 null 的效果是每个 POSIX 的未定义行为,因此这将取决于您使用的 awk 版本。
    【解决方案2】:

    使用 GNU awk 可以使用空字符串作为字段分隔符,您可以这样做:

    awk -F '' '{print $1, $4, $11}' OFS='' infile
    

    【讨论】:

    • 如果你能详细说明一下就好了。 (参考标准)
    • 他不能引用标准,因为将 FS 设置为 null 的效果是每个 POSIX 的未定义行为,所以这将取决于您使用的 awk 版本。我想他可以参考 gawk 用户指南...
    【解决方案3】:

    您也可以尝试关注awk

    awk '{print substr($0,1,1) substr($0,4,1) substr($0,11,1)}'  Input_file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2013-07-05
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多