我在 Windows 7 上使用 cygwin 。我有一个包含所有文本文件的目录,我想循环遍历它,并为每个文件(1,2)(2,2)和(3,2)保存前三行的第二列中的数据。
所以,代码就像是
x1[0]=awk 'FNR == 1{print $2}'$file1
x1[1]=awk 'FNR == 2{print $2}'$file1
x1[2]=awk 'FNR == 3{print $2}'$file1
然后我想使用除以$x1
加上1 的100来访问其他文件中的数据并将其存储在数组中。那就是:
let x1[0]=$x1[0]/100 + 1
let x1[1]=$(x1[1]/100)+1
let x1[2]=$(x1[2]/100)+1
read1=$(awk 'FNR == '$x1[0]' {print $1}' $file2)
read2=$(awk 'FNR == '$x1[1]' {print $1}' $file2)
read3=$(awk 'FNR == '$x1[2]' {print $1}' $file2)
对另一个文件执行相同的操作,但我们不需要$x1
。
read4=$(awk 'FNR == 1{print $3,$4,$5,$6}' $file3)
最后,只需将所有这些值输出到文件,即read1-4
需要在文件夹中的所有文件的循环中执行此操作,不太确定如何去处理。棘手的部分是$file3
的文件名取决于$file1
的文件名,
所以如果$file1
= abc123def.fna.map.txt
$file3
将为abc123def.fna
$file2
在其中是硬编码的,并且在所有迭代中保持不变。
file1
是一个.txt
文件,其中一部分如下:
99 58900
16 59000
14 73000
file2
包含600行字符串。
'Actinobacillus_pleuropneumoniae_L20'
'Actinobacillus_pleuropneumoniae_serovar_3_JL03'
'Actinobacillus_succinogenes_130Z'
'file3'是 FASTA 文件,前两行看起来像这样
>gi|94986445|ref|NC_008011.1| Lawsonia intracellularis PHE/MN1-00, complete genome
ATGAAGATCTTTTTATAGAGATAGTAATAAAAAAATGTCAGATAGATATACATTATAGTATAGTAGAGAA
输出可以将所有4个读取写入随机文件,或者如果可能,可以比较read1,read2,read3以及它是否与read4匹配,即主名称应该匹配。在我的例子中:
read1-3
没有一个与Lawsonia intracellularis
的{{1}}匹配。因此,它只能将成功或失败打印到文件中。
SAMPLE OUTPUT
read4
抱歉我对6次读取错了,实际上只需要4次。再次感谢您的帮助。