정렬 사용 문제 [중복]

정렬 사용 문제 [중복]

다음과 같은 파일이 있습니다.

Y10 122.894054 7.653405
B3 124.406526 8.281803
B3' 125.000684 8.389677
A11 102.801917 9.288624
A11' 127.661564 8.216719
D4 117.182791 7.418388

다음과 같이 첫 번째 열을 숫자로 정렬하고 싶습니다.

B3 124.406526 8.281803
B3' 125.000684 8.389677
D4 117.182791 7.418388
Y10 122.894054 7.653405
A11 102.801917 9.288624
A11' 127.661564 8.216719

이 명령을 사용하지만 작동하지 않습니다.

sort -k1,23 -k1n junk

답변1

첫 번째 숫자 앞에 고유한 구분 기호(예: "#")를 임시로 추가하세요.

sed 's/^\([^0-9]*\)/\1#/' junk | sort -t '#' -k 2n,2 | tr -d '#'

이것은 일반적인 경우이며, 첫 번째 숫자 앞에 "#"이 포함되지 않은 텍스트 파일의 첫 번째 숫자를 정렬합니다.

원하는 경우 더 멋진 구분 기호를 사용할 수도 있습니다.

SEP=`printf '\02'`
sed "s/^\([^0-9]*\)/\1$SEP/" junk | sort -t "$SEP" -k 2n,2 | tr -d "$SEP" 

관련 정보