하나의 출력에 각 파일의 출력을 점진적으로 추가하는 방법은 무엇입니까? 모든 파일에 대해 붙여넣기 명령을 함께 실행하지 않고 이 작업을 수행하고 싶습니다. 10,000개의 파일이 있고 각 파일의 크기는 100GB이기 때문입니다.
파일 1
a 1
b 2
c 3
파일 2
a 10
b 20
c 40
파일 3
a 0
b 0
c 0
원하는 출력
file1 file1 file2 file2 file3 file3
a 1 a 10 a 0
b 2 b 20 b 0
c 3 c 40 c 0
원하는 출력과 비슷한 것을 얻을 수 있다는 것을 알고 있지만 paste -d "\t" file{1..3}
작업을 하나씩 수행하고 싶지만 모두 함께 수행하지는 않으며 중요한 것은 파일 이름을 보존하고 싶습니다.
답변1
paste
파일 줄만 병합해야 한다면 명령이 좋은 선택입니다.
접두사머리글줄 및 파일 이름 사용 조합앗+반죽:
{ for f in file*; do awk '{ for(i=1;i<=NF;i++) printf("%s\t",FILENAME); exit }' "$f"; done;
echo ""; paste -d"\t" file*; } | column -t
출력(3개 입력 파일용):
file1 file1 file2 file2 file3 file3
a 1 a 10 a 0
b 2 b 20 b 0
c 3 c 40 c 0
세부 사항:
{ command; command; ...}
- 여러 명령의 출력을 결합하는 데 사용됩니다.for f in file*;
- 각 파일에 대해printf("%s\t",FILENAME)
- 해당 파일의 각 열의 파일명을 출력exit
- 첫 번째 라인 처리 후 즉시 종료