여러 파일과 다양한 버전의 파일이 있습니다. 각 파일에서 가장 높은 번호의 버전을 선택하려면 어떻게 해야 합니까?

여러 파일과 다양한 버전의 파일이 있습니다. 각 파일에서 가장 높은 번호의 버전을 선택하려면 어떻게 해야 합니까?

여러 파일과 다양한 버전의 파일이 있습니다. 각 파일에서 가장 높은 번호의 버전을 선택하려면 어떻게 해야 합니까?

전임자:

ac-1
ac-2
bc-1
bc-2

원하는 출력.

 ac-2,bc-2

답변1

파일 이름을 역순으로 정렬하고 각 파일 이름의 첫 번째 항목을 선택할 수 있습니다.

$ cat input                                                                                            
ac-1
ac-2
bc-1
bc-2

$ cat input | sort -r | awk -F '-' '!seen[$1]++' 
bc-2
ac-2

awk 명령은 "-"를 구분 기호로 사용한 다음 요소(ac, ac, bc, bc)의 첫 번째 열이 처음 나타나는 각 줄을 인쇄합니다. 물론 이는 버전 번호가 항상 첫 번째 "-" 다음에 시작한다고 가정합니다.

답변2

사용할 짧은 bash 스크립트암소 비슷한 일종의 영양datamash최대값을 찾으세요:

#!/bin/bash
mapfile -t files < <(datamash -st'-' -g1 max 2 < "$1")
IFS=,
echo "${files[*]}"

용법:

$ ./example.sh input.txt
ac-2,bc-2

관련 정보