在循环中连接成对的文件

fus*_*ope 1 shell-script text-processing merge

我有两个以两个不同扩展名结尾的文件列表,我想将它们成对地串联起来。文件名如下所示:

这些是文件

a.ID, b.ID, c.ID, d.ID     
a.value, b.value, c.value, d.value  
Run Code Online (Sandbox Code Playgroud)

直觉上我会这样做:

for i in *.ID;  
do  
     for j in *.value;  
do  
     cat $i $j > $i.txt ; done  
done  
Run Code Online (Sandbox Code Playgroud)

问题是,我想合并a.ID使用a.value,并b.IDb.value并以这种方式,他们被随机合并。就像a.valueb.ID等。

任何的想法?提前致谢

样本输入a.ID(例如):

chr1_237301_237601  176 1  
chr1_237601_237901  176 1  
chr1_237901_238201  176 1 
Run Code Online (Sandbox Code Playgroud)

a.value(例如)结尾的示例:

chr1_1_301      0   0  
chr1_301_601    0   0  
chr1_601_901    0   0  
chr1_901_1201   0   0  
chr1_1201_1501  0   0  
Run Code Online (Sandbox Code Playgroud)

输出:

chr1_237301_237601  176 1    
chr1_237601_237901  176 1   
chr1_237901_238201  176 1  
chr1_1_301      0   0    
chr1_301_601    0   0   
chr1_601_901    0   0  
chr1_901_1201   0   0  
chr1_1201_1501  0   0
Run Code Online (Sandbox Code Playgroud)

Sat*_*ura 7

你不需要两个循环。你需要一个循环,通过abc等像这样:

for i in *.ID; do
    b=${i%%.ID}
    cat "$i" "$b".value >"$b".txt
done
Run Code Online (Sandbox Code Playgroud)