这是(简单)for循环做我想要的吗?

时间:2013-07-09 08:55:25

标签: bash cygwin

我几乎没有使用cygwin& amp; UNIX但需要使用它从更大的文件集中提取大量数据... 昨天我帮忙做了这个简短的脚本,但是(运行了大约7-8个小时后)脚本只是写了22次相同的输出文件。至少这就是我认为发生的事情。

我现在已经将代码改为此(见下文),但如果有人知道如何正确完成这项工作可能会告诉我它是否可能在我浪费了8个小时之前工作真的很棒......

for chr in {1..22}
do
zcat /cygdrive/g/data/really_long_filename$chr | sed '/^#/d' | cut -f1-3 >> db_to_rs_$chr
done

我希望它读取文件1..22,删除以#开头的行,并将第1列到第3列发送到以相同数字结尾的文件1..22

昨天最后一部分只是...-f1-3 >> db_to_rs,我怀疑这个文件只重写了22次?

非常感谢帮助 〜1

1 个答案:

答案 0 :(得分:2)

是的,代码可以按预期工作。

当命令以...-f1-3 >> db_to_rs结束时,它基本上将所有输出附加到文件db_to_rs

... >> db_to_rs_$chr会创建以{1 .. 22}结尾的文件名。

但是,请注意,>>输出附加到文件中。因此,如果db_to_rs1已存在,则输出将追加。如果您想要创建文件,请说出>而不是>>