[linux] 두 번째 열에 따른 Linux 쉘 정렬 파일?

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

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 사용


답변

두 번째 필드로만 정렬하려면 (따라서 두 번째 필드가 일치하는 경우 일치하는 행은 다른 필드에서 정렬하지 않고 원래의 순서대로 유지됩니다) :

sort -k 2,2 -s orig_file > sorted_file


답변

FWIW, 다음은 가장 좋은 메모리를 사용하는 프로세스를 보여주는 정렬 방법입니다.

memstat | sort -k 1 -t':' -g -r | less

정렬 옵션은 열 구분자로, 숫자 정렬 및 역순 정렬을 사용하여 첫 번째 열로 설정됩니다.


답변

sort -nk2 file.txt

따라서 열 번호를 변경할 수 있습니다.


답변