文本文件中的重复行取决于列值

时间:2019-04-18 00:00:41

标签: bash awk

我试图根据一列中存在的整数来复制一系列行。

例如,当考虑第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

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

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

将数据保存在名为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循环处理快几个数量级。