我试图根据一列中存在的整数来复制一系列行。
例如,当考虑第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
但是,它返回的只是原始表的第一列。
有人可以帮助我吗?
答案 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循环处理快几个数量级。