文件夹中有一组匹配的文件,每对文件的名称都是这样的,带有一个基本名称,例如
LP6005334-DNA_H01_vs_LP6005333-DNA_H01.passed.somatic.indels.vcf.parsed.txt
和
LP6005334-DNA_H01_vs_LP6005333-DNA_H01.passed.somatic.indels.vcf_fixed_vcf.txt.hg19_multianno.txt
我如何columns 5th and 6th
从passed.somatic.indels.vcf.parsed
文件名中提取并将这些列附加到匹配的文件(passed.somatic.indels.vcf_fixed_vcf.txt.hg19_multianno
)返回输出。TXT与基名(LP6005334-DNA_H01_vs_LP6005333-DNA_H01
)
为了切割我做的柱子
[
fi1d18@cyan01 folder]$ for f in *.passed.somatic.indels.vcf.parsed.txt; do awk '{print $5,$6}' $f > $out
> done;
-bash: $out: ambiguous redirect
此后,我不知道如何找到匹配的查找并将剪切的列附加到该查找
这是这些文件的链接
和
答案1
这取决于你的文件是如何分隔的,但你应该能够使用类似
for f in *.vcf.parsed.txt; do
cut -f3,4 "$f" | paste "${f%.parsed.txt}_fixed_vcf.txt.hg19_multianno.txt" - > "${f%%.*}.txt"
done
扩展${f%.parsed.txt}
和${f%%.*}
分别从循环文件名中删除最短和最长的“点后缀”。
对于文件对
LP6008336-DNA_H02_vs_LP6008333-DNA_H02.snp.pass.txt
LP6008336-DNA_H02_vs_LP6008333-DNA_H02.snp.pass.txt.hg19_multianno.txt
哪个不符合原始问题中的命名约定,您需要相应地更改模式匹配
前任。
for f in *.pass.txt; do
cut -f60,61 "$f" | paste "$f.hg19_multianno.txt" - > "${f%%.*}.txt";
done