我正在尝试通过数据进行筛选,并且只想复制只有1个代表某个组的文件。例如,该文件可能看起来像:
sample_ AAAAA_9824_r1GGAAGCATCGTGGGAACTGCTTCACTA-----示例_AACCC_12358_r1ggaagcat-----示例_AATTT_3905_r1ggaagcat-----示例_ACGTA_178_r1ggaagcat-----示例_ACTGC_9933_r1GGAAGCATCGTRGGAACTGCTTCACTA
我有大约36000个这样的文件,我只想把它们复制到一个不同的文件夹中,每个样本只有一个条目(例如,1个样本是样本ACTGC)。有26个样本"数字",由5个字母组成(例如AAAAA、AATTTT、ACGTC…),以下数字和"r1"无关。
我一直在寻找不同的bash脚本,但找不到我需要的确切东西。我可以统计文件中每个样本的出现次数,但这可能不是方法。。。
非常感谢任何帮助,Yannick
您可以使用循环根据sort
的输出使用cmp
与sort | uniq
:的输出进行比较
for f in files/*
do if cmp -s <(grep sample ${f} | cut -d'_' -f2 | sort) <(grep sample ${f} | cut -d'_' -f2 | sort | uniq)
then
echo "copying file ${f} here..."
# ... copy
else
"not copying file ${f} here" # do nothing...!
fi
done