我有两组文件,例如P_1.dat,P_2.dat,P_3.dat,... P_45.dat和S_1.dat,S_2.dat,S_3.dat,....,S_45.dat 。我要做的是在循环中顺序合并每对(P和S)并为结果文件指定一个新名称。
awk '{for (i=1;i<=45;++i) paste P_i.dat S_i.dat}' > NEWNAME_i.dat
答案 0 :(得分:0)
如果我理解正确,你只需要一个shell循环:
for i in {1..45}; do
paste "P_$i.dat" "S_$i.dat" > "L_$i.dat"
done
生成的一系列文件将包含来自两个相应P和S文件的内容。
如果你的shell不能理解大括号扩展,那么你可以使用while
循环实现同样的目的:
i=1
while [ $i -le 45 ]; do
paste "P_$i.dat" "S_$i.dat" > "L_$i.dat"
i=$(( i + 1 ))
done
显然,在这种情况下,45可以用变量替换。
或者,如果你的shell支持它,你可以使用C风格的for
循环:
max=20
for (( i = 1; i < max; ++i )); do
paste "P_$i.dat" "S_$i.dat" > "L_$i.dat"
done
...或者您可以自己遍历文件:
for file in P_*.dat; do
i=${file%.dat}
i=${number#P_}
paste "P_$i.dat" "S_$i.dat" > "L_$i.dat"
done