番号順に名前が付けられた複数のファイルから5番目の列を抽出し、それらの列を順番に並べて1つの出力ファイルに貼り付けたいと思います。
ファイル名は次のようになります。
sample_problem1_part1.txt
sample_problem1_part2.txt
sample_problem2_part1.txt
sample_problem2_part2.txt
sample_problem3_part1.txt
sample_problem3_part2.txt
......
各問題ファイル(1,2,3 ...)には、2つの部分(part1、part2)があります。各ファイルの行数は同じです。コンテンツは次のようになります。
sample_problem1_part1.txt
1 1 20 20 1
1 7 21 21 2
3 1 22 22 3
1 5 23 23 4
6 1 24 24 5
2 9 25 25 6
1 0 26 26 7
sample_problem1_part2.txt
1 1 88 88 8
1 1 89 89 9
2 1 90 90 10
1 3 91 91 11
1 1 92 92 12
7 1 93 93 13
1 5 94 94 14
sample_problem2_part1.txt
1 4 330 30 a
3 4 331 31 b
1 4 332 32 c
2 4 333 33 d
1 4 334 34 e
1 4 335 35 f
9 4 336 36 g
出力は次のようになります:(problem 1 _part 1、problem 1 _part 2、problem 2 _part 1、problem 2 _part 2、problem 3 _part 1、problem 3 _part 2などのシーケンス)
1 8 a ...
2 9 b ...
3 10 c ...
4 11 d ...
5 12 e ...
6 13 f ...
7 14 g ...
私が使用していたもの:
paste sample_problem1_part1.txt sample_problem1_part2.txt > \
sample_problem1_partall.txt
paste sample_problem2_part1.txt sample_problem2_part2.txt > \
sample_problem2_partall.txt
paste sample_problem3_part1.txt sample_problem3_part2.txt > \
sample_problem3_partall.txt
その後:
for i in `find . -name "sample_problem*_partall.txt"`
do
l=`echo $i | sed 's/sample/extracted_col_/'`
`awk '{print $5, $10}' $i > $l`
done
と:
paste extracted_col_problem1_partall.txt \
extracted_col_problem2_partall.txt \
extracted_col_problem3_partall.txt > \
extracted_col_problemall_partall.txt
いくつかのファイルで問題なく動作しますが、ファイルの数が多い場合(4000を超える場合)はおかしな方法です。誰かが複数のファイルを処理できるより簡単なソリューションを手伝ってくれませんか?ありがとう!