여러 파일과 다양한 버전의 파일이 있습니다. 각 파일에서 가장 높은 번호의 버전을 선택하려면 어떻게 해야 합니까?
전임자:
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