두 개의 열로 정렬

두 개의 열로 정렬

sales1다음을 수행하기 위해 nawkusing 및 command라는 쉘 스크립트를 작성합니다 . 1. 파일을 두 부분(동쪽과 서쪽)으로 분할하고 인쇄합니다. 각 부분의 행은 성의 알파벳 순서로 각 분기와 각 사람의 총 판매량을 표시합니다. . 2. 영업사원 세 그룹의 이름을 인쇄하세요. "다음 사람들의 총 매출은 $270 이상입니다." "다음 사람들의 총 매출은 $250~$270입니다." "다음 사람들의 총 매출은 $250 미만입니다. " sort




east:Sam Smith:52:72:78:62  
east:Daniel Liebelt:83:78:84:61  
east:Shirley Couts:66:57:67:37  
east:James Peringer:50:62:56:94  
east:Lilly Batsuro:58:85:84:52  
west:Alex Opitz:79:68:57:93  
west:Carmen Gondar:62:58:85:56  
west:Derek Willard:63:69:74:43  
west:Kim Husak:89:91:63:64  
west:Lenny Taufa:53:61:82:52

#1에 대한 도움이 필요해요...

나는 노력했다

sort -k1,1 -k2,2

하지만 성이 아닌 동쪽, 서쪽으로만 정렬됩니다. 첫 번째 열을 방향과 이름으로 처리하고 두 번째 열을 숫자가 포함된 성으로 처리하려고 합니다.

답변1

첫 번째 및 세 번째 필드(이번에는 필드 구분 기호로 사용 )를 마지막 필드(예: 성과 그 뒤의 모든 항목) 앞에 추가한 다음 마지막 필드에서 첫 번째 필드를 다시 제거할 awk수 있습니다 .:sort:awk:

awk '$NF=":"$NF' infile | sort -t : -k1,1 -k3,3 | awk 'sub(/:/, "", $NF)'

최종 결과:

east:Lilly Batsuro:58:85:84:52
east:Shirley Couts:66:57:67:37
east:Daniel Liebelt:83:78:84:61
east:James Peringer:50:62:56:94
east:Sam Smith:52:72:78:62
west:Carmen Gondar:62:58:85:56
west:Kim Husak:89:91:63:64
west:Alex Opitz:79:68:57:93
west:Lenny Taufa:53:61:82:52
west:Derek Willard:63:69:74:43

답변2

sed -r 's/^([^:]+):([^ ]+) ([^:]+):.*$/\1-\3 &/' your-file.txt  | \
    sort | sed -r 's/[^ ]+ (.*)/\1/'

예:

$ sed -r 's/^([^:]+):([^ ]+) ([^:]+):.*$/\1-\3 &/' your-file.txt  | sort | sed -r 's/[^ ]+ (.*)/\1/'
east:Lilly Batsuro:58:85:84:52
east:Shirley Couts:66:57:67:37
east:Daniel Liebelt:83:78:84:61
east:James Peringer:50:62:56:94
east:Sam Smith:52:72:78:62
west:Carmen Gondar:62:58:85:56
west:Kim Husak:89:91:63:64
west:Alex Opitz:79:68:57:93
west:Lenny Taufa:53:61:82:52
west:Derek Willard:63:69:74:43

그런데 다음은 sort다음을 실행할 때 첫 번째 및 두 번째 필드를 선택하는 방법 입니다 sort -k1,1 -k2,2.

$ sort --debug -k1,1 -k2,2 ttt.txt
east:Daniel Liebelt:83:78:84:61
___________
           ____________________
_________________________________
east:James Peringer:50:62:56:94
__________
          _____________________
_________________________________
east:Lilly Batsuro:58:85:84:52
__________
          ____________________
________________________________
east:Sam Smith:52:72:78:62
________
        __________________
____________________________
east:Shirley Couts:66:57:67:37
____________
            __________________
________________________________
west:Alex Opitz:79:68:57:93
_________
         __________________
_____________________________
west:Carmen Gondar:62:58:85:56
___________
           ___________________
________________________________
west:Derek Willard:63:69:74:43
__________
          ____________________
________________________________
west:Kim Husak:89:91:63:64
________
        __________________
____________________________
west:Lenny Taufa:53:61:82:52
__________
          __________________

관련 정보