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를 사용하여 이전 부분을 제거하고 헤더로 변환하는 스크립트를 작성할 수 있습니다.