AWK 在循环中合并两个不同的顺序文件集
AWK merge two different sequential file set in a loop
我有两组文件,例如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
如果我没理解错的话,你只需要一个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
我有两组文件,例如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
如果我没理解错的话,你只需要一个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