여러 개의 파일(~15개)이 있고 각 파일에는 여러 개의 데이터 열(탭으로 구분)이 있습니다. 예를 들어:
파일 1
aa1 399 1815
aa2 1908 4064
aa3 4523 5656
파일 2
bb1 5304317 5305057
bb2 5305057 5305824
bb3 5306871 5307875
등.
각 파일의 두 번째 열을 읽고 나란히 인쇄하여 15열 출력을 만들고 싶습니다. 예를 들어:
산출
399 5304317 7526 12455
1908 5305057 8195 14538
4523 5306871 9216 15150
각 열은 다른 파일에 있습니다. 첫 번째 열에 주목하세요산출두 번째 열입니다파일 1,두 번째 열산출두 번째 열입니다파일 2.
페이스트를 사용하려고 생각했습니다. 그러나 각 입력 파일의 모든 데이터를 배치합니다. 이것이 어떻게 달성될 수 있습니까?
답변1
각각 3개의 열이 있는 3개의 파일에 대해 다음과 같이 사용할 수 있습니다.
pr -m -t -s file1 file2 file3|awk '{printf("%s\t%s\t%s\n",$2,$5,$8)}'
파일 수와 파일당 필드 수를 계산하는 것으로 래핑할 수도 있지만 이것이 시작점입니다.
답변2
괜찮다면 이렇게 하셔도 돼요
for file in $(ls File*); do
awk '{print $2}' < $file > $file.col2
done
pr -m -s *.col2 > merged.txt
rm -f *.col2
답변3
어쩌면 paste
잘 어울리는 것 같나요?
$ paste <(cut -f2 file1) <(cut -f2 file2) <(cut -f2 file3) <(cut -f2 file4)
399 5304317 7526 12455
1908 5305057 8192 14538
4523 5306871 9216 15150
$