sales1
다음을 수행하기 위해 nawk
using 및 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
__________
__________________