다음과 같은 파일이 있습니다.
FirstName, FamilyName, Address, PhoneNumber
FamilyName으로 정렬하려면 어떻게해야합니까?
다음과 같은 파일이 있습니다.
FirstName, FamilyName, Address, PhoneNumber
FamilyName으로 정렬하려면 어떻게해야합니까?
답변:
UNIX 인 경우 :
sort -k 2 file.txt
여러 -k
플래그를 사용 하여 둘 이상의 열을 정렬 할 수 있습니다 . 예를 들어, 성을 기준으로 정렬 한 다음 이름을 타이 브레이커로 정렬하려면 :
sort -k 2,2 -k 1,1 file.txt
"man sort"의 관련 옵션 :
-k, --key = POS1 [, POS2]
POS1에서 키를 시작하고 POS2에서 종료합니다 (원점 1).
POS는 F [.C] [OPTS]입니다. 여기서 F는 필드 번호이고 C는 필드의 문자 위치입니다. OPTS는 하나 이상의 단일 문자 주문 옵션으로 해당 키에 대한 전역 주문 옵션을 재정의합니다. 키가 제공되지 않으면 전체 행을 키로 사용하십시오.
-t, --field-separator = SEP
공백이 아닌 전환 대신 SEP 사용
--field-separator=','
"Billy Bob"과 같은 "이름"에 대한 값에 데이터 입력 연산자 유형이있을 수있는 경우 사용하는 데 약간주의해야합니다. 보호하지 않으면 공백이 데이터에 쉽게 들어갈 수 있지만 쉼표는 비교적 가능성이 낮습니다.
-b
옵션을 사용해야합니다 . 이는 sort
실제로 정렬 할 문자열이 열의 첫 글자가 아닌 쉼표 바로 뒤에서 시작한다고 생각 하기 때문 입니다. 또한 LC_ALL=C
간단한 ASCII 파일에서도 발생할 수있는 로케일로 인한 부작용을 방지하기 위해 명령 앞에를 붙여야 할 수도 있습니다.
-b
( --ignore-leading-blanks
) 에 대한 부분 감사합니다 . 비트를 명확히하기 : echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2
부여 a<SPACE><SPACE>b
제 (제 이후 두 번째 열이 시작 non-blank to blank transition
하고 <SPACE><SPACE>b
이전하다 <SPACE>a
), 그러나와 -b
그것이 제공 aa<SPACE>a
예상 ( a
이전이다 b
).
sort -nk2 file.txt
따라서 열 번호를 변경할 수 있습니다.