명령 stdout을 각 파일마다 하나씩 섹션으로 분할하려면 어떻게 해야 합니까?

명령 stdout을 각 파일마다 하나씩 섹션으로 분할하려면 어떻게 해야 합니까?

Linux 명령이 여러 파일을 입력으로 가져오는 경우. 명령을 stdout섹션으로 분할하는 명령/트릭이 있습니까 ? 파일당 하나씩? 그러면 어떤 줄이 어떤 파일에 속하는지 시각적으로 명확해집니다.

예를 들어, cat, grep, sed, sort, 와 같은 명령이 tail여러 파일을 입력으로 가져오는 경우입니다. 일반적으로 결과를 에 계속 인쇄하는데 stdout, 결과를 여러 섹션으로 나누고 싶습니다. 각 입력 파일에 대해 하나씩

결과를 파일로 분할하거나 요청한 대로 줄 수로 분할하고 싶지 않습니다.이 질문. 내가 찾은 가장 가까운 것은 find -print -exec command설명대로 사용하는 것입니다.여기. 하지만 여전히 내가 원하는 것은 아닙니다.

내 명령이 file1, file2및 에서 file3입력으로 작동하고 다음을 인쇄한다고 가정합니다.

line1 of file1
line2 of file1
line3 of file1
line1 of file2
line2 of file2
line3 of file2
line1 of file3
line2 of file3
line3 of file3

출력을 다음과 유사한 형식으로 지정하고 싶습니다. 따라서 파일에서 찾고 있는 내용을 관찰하면 다음 파일로 이동할 수 있습니다.

>>> file1 <<<
line1 of file1
line2 of file1
line3 of file1

----------------
>>> file2 <<<
line1 of file2
line2 of file2
line3 of file2

----------------
>>> file3 <<<
line1 of file3
line2 of file3
line3 of file3

미리 감사드립니다.

답변1

파일별로 정렬하는 것 외에 줄 순서에 관심이 없다면 sort를 사용하여 각 줄 앞에 ID를 추가하여 이를 수행할 수 있습니다.

file1: line1
file2: line1
file1: line2

그런 다음 정렬을 통해 결과를 파이프할 수 있습니다.

$ ( process-file1 & process-file2 & ); wait | sort
file1: line1
file1: line2
file2: line1

물론 이 접근 방식을 사용하여 줄 번호를 추가할 수도 있습니다. 그런 다음 간단히 "sort -n"을 사용하세요.

원하는 정확한 형식으로 처리하려면 awk로 스크립트를 구성하여 앞부분을 제거하고 제목으로 바꿀 수 있습니다.

관련 정보