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.ID
与b.value
并以这种方式,他们被随机合并。就像a.value
用b.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)
你不需要两个循环。你需要一个循环,通过a
,b
,c
等像这样:
for i in *.ID; do
b=${i%%.ID}
cat "$i" "$b".value >"$b".txt
done
Run Code Online (Sandbox Code Playgroud)