정렬 순서 및 루트를 사용하여 CLI에서 텍스트 파일을 제거합니다.

정렬 순서 및 루트를 사용하여 CLI에서 텍스트 파일을 제거합니다.

각각 수많은 항목이 포함된 일련의 txt 파일이 있습니다. 나는 일반적으로 cat을 사용하여 모든 txt 파일을 하나의 출력 파일로 병합하지만 어떤 원본 txt 파일에서 왔는지 확신할 수 없기 때문에 약간 지저분해집니다.

명령줄을 사용하여 먼저 모든 txt 파일을 알파벳 순서로 병합하고 동시에 원래 항목에 접미사를 추가하여 원본 파일을 기록하는 방법이 있는지 궁금합니다.

예를 들어 각각 3개의 항목이 포함된 2개의 txt 파일이 있다고 가정해 보겠습니다.

파일_하나:

  Alpha
  Bravo 
  Charlie

파일_2:

  Alpha
  Bravo
  Delta

내가 하고 싶은 것은 이것이다:

  1. 알파벳 순서로 정렬된 하나의 출력 txt 파일에 두 목록을 병합합니다.
  2. 어느 목록에서 왔는지 표시하려면 접미사를 추가하세요.

       Alpha_File_One
       Alpha_File_Two
       Bravo_File_One
       Bravo_File_Two
       Charlie_File_One
       Delta_File_Two
    

이것이 가능한가?

답변1

Florian이 말했듯이 먼저 파일 이름을 추가한 다음 정렬해야 합니다. 또 다른 방법은 다음을 사용하는 것입니다 awk.

$ awk '{printf "%s_%s\n", $0, FILENAME}' f1 f2 | sort
Alpha_f1
Alpha_f2
Bravo_f1
Bravo_f2
Charlie_f1
Delta_f2

printf지정된 형식으로 인수를 인쇄합니다. 즉 , 개행 문자로 %s_%s\n구분된 두 문자열을 의미합니다 . 현재 줄과 파일 이름을 각각 포함합니다 . 이 예에서는 파일 이름을 및 로 지정했습니다._$0FILENAMEf1f2

답변2

다른 방법으로 수행해야 합니다. 먼저 접미사를 추가하고 병합하고 정렬합니다.

(sed 's/$/_File_One/' File_One; sed 's/$/_File_Two/' File_Two) | sort 

관련 정보