
각각 수많은 항목이 포함된 일련의 txt 파일이 있습니다. 나는 일반적으로 cat을 사용하여 모든 txt 파일을 하나의 출력 파일로 병합하지만 어떤 원본 txt 파일에서 왔는지 확신할 수 없기 때문에 약간 지저분해집니다.
명령줄을 사용하여 먼저 모든 txt 파일을 알파벳 순서로 병합하고 동시에 원래 항목에 접미사를 추가하여 원본 파일을 기록하는 방법이 있는지 궁금합니다.
예를 들어 각각 3개의 항목이 포함된 2개의 txt 파일이 있다고 가정해 보겠습니다.
파일_하나:
Alpha
Bravo
Charlie
파일_2:
Alpha
Bravo
Delta
내가 하고 싶은 것은 이것이다:
- 알파벳 순서로 정렬된 하나의 출력 txt 파일에 두 목록을 병합합니다.
어느 목록에서 왔는지 표시하려면 접미사를 추가하세요.
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
구분된 두 문자열을 의미합니다 . 현재 줄과 파일 이름을 각각 포함합니다 . 이 예에서는 파일 이름을 및 로 지정했습니다._
$0
FILENAME
f1
f2
답변2
다른 방법으로 수행해야 합니다. 먼저 접미사를 추가하고 병합하고 정렬합니다.
(sed 's/$/_File_One/' File_One; sed 's/$/_File_Two/' File_Two) | sort