【问题标题】:Duplicate rows in text file depending on column value文本文件中的重复行取决于列值
【发布时间】:2019-04-18 08:13:34
【问题描述】:

我正在尝试根据其中一个列中存在的整数复制一系列行。

例如,考虑第 4 列时:

AATTGGCC  5.2  4.8  1
CCGGTTAA  1.8  3.3  3
ATATGCGC  1.8  4.6  1

我的代码应该返回:

AATTGGCC
CCGGTTAA
CCGGTTAA
CCGGTTAA
ATATGCGC

目前,我有这个代码:

while read line; do
   for i in awk '{4}'; do
   awk '{print $1}' >> output.txt
   done
done < input.txt

但是,它返回的只是原始表中的第一列。

谁能帮帮我?

【问题讨论】:

    标签: bash awk


    【解决方案1】:

    将您的数据保存在一个名为 f 的文件中,您只需使用 awk 即可,例如

    $ awk '{ n=$4; while (n--) print $1}' f
    AATTGGCC
    CCGGTTAA
    CCGGTTAA
    CCGGTTAA
    ATATGCGC
    

    您只需在第 4 列中获取数字并循环多次输出第一列在自己的一行中。如果您还有其他问题,请告诉我。

    如果你确实想用 shell 来做(不要,但假设性地),你可以做同样的事情:

    $ while read dna n n n; do while ((n-- != 0)); do  echo "$dna"; done; done < f
    AATTGGCC
    CCGGTTAA
    CCGGTTAA
    CCGGTTAA
    ATATGCGC
    

    awk 总是比使用 shell 循环处理快几个数量级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      相关资源
      最近更新 更多