0

我对 Shell/Bash 很陌生,但我想用它来建立一些分析的管道。我使用 bash 生成多个文件,如下所示:

for i in {1..10}; 
    do sim XX.in.$i.txt > XX.out.$i.txt;
    done;

for i in {1..10}; 
    do sim YY.in.$i.txt > YY.out.$i.txt;
    done;

这给了我 20 个输出文件;XX.out.1.txt、XX.out.2.txt、YY.out.1.txt、YY.out.2.txt 等。

现在我想连接 XX.out.1.txt 和 YY.out.1.txt 然后 XX.out.2.txt 和 YY.out.2.txt 等,所以总是只有两个名称不同但相同的文件数字。最简单的方法是什么?

4

2 回答 2

1

您可以避免重复循环:

for i in {1..10}; do
  ( sim XX.in.${i}.txt; sim YY.in.${i}.txt ) > concatenated.${i}.txt
done

但是,如果您需要保留中间文件:

for i in {1..10}; do
  sim XX.in.${i}.txt > XX.out.${i}.txt
  sim YY.in.${i}.txt > YY.out.${i}.txt
  cat XX.out.${i}.txt YY.out.${i}.txt > concatenated.${i}.txt
done
于 2012-10-04T14:11:48.960 回答
0

该解决方案与您创建文件的方式非常相似:

for i in {1..10} ; do
    cat XX.out.$i.txt YY.out.$i.txt > concatenated.$i.txt
done
于 2012-10-04T14:05:40.137 回答