Linux 정렬 명령: 필드에 포함된 숫자를 정렬하는 방법은 무엇입니까?

Linux 정렬 명령: 필드에 포함된 숫자를 정렬하는 방법은 무엇입니까?

저는 BASH를 사용하여 RHEL 6을 사용하고 있습니다.

필드에 포함된 숫자를 기준으로 파일의 일부 줄을 정렬하려고 합니다. 파일 이름은 word.txt입니다.

이것은 내가 사용하는 명령입니다:

sort -n -k4 word.txt

이것은 숫자 순서가 아닌 내가 얻는 결과입니다.

INSERT INTO area_names VALUES(124,'NewYork');
INSERT INTO area_names VALUES(125,'NewYork');
INSERT INTO area_names VALUES(12,'NewYork');

당연히 "12"만 있는 줄이 첫 번째가 되어야 합니다.

"VALUES(" 뒤의 숫자는 임의의 길이일 수 있습니다.

"VALUES("와 "," 사이의 숫자를 기준으로 정렬하도록 어떻게 알 수 있나요?

데이터에서 "VALUES(" 뒤에 공백을 넣는 방법을 사용할 수 있지만 이것이 최선의 선택이 아니라면 그렇게 하지 않는 것이 좋습니다.

답변1

이 시도:

 sort -t "(" -k2,2 -n word.txt

산출

INSERT INTO Area_names VALUES(12,'NewYork');
INSERT INTO 지역 이름 VALUES(124,'NewYork');
INSERT INTO 지역 이름 VALUES(125,'NewYork');

-k POS1[,POS2]

     사이의 선 부분으로 구성된 정렬 필드를 지정합니다.
     POS1 및 POS2(또는 POS2가 생략된 경우 줄의 끝),
     _포함한_.

     각 POS는 `F[.C][OPTS]' 형식을 가지며, 여기서 F는 POS의 번호이다.
     사용할 필드이며 C는 해당 필드의 첫 번째 문자 번호입니다.
     필드의 시작. 필드와 문자 위치는 다음과 같습니다.
     1부터 시작하는 번호; POS2에서 문자 위치 0
     필드의 마지막 문자를 나타냅니다. `.C'가 생략된 경우
     POS1의 경우 기본값은 1(필드 시작 부분)입니다. 생략된 경우
     POS2에서는 기본값이 0(필드 끝)입니다. OPTS는
     주문 옵션을 통해 개별 키를 순서에 따라 정렬할 수 있습니다.
     다른 규칙에; 자세한 내용은 아래를 참조하세요. 키는 여러 개에 걸쳐 있을 수 있습니다.
     필드.

     예: 두 번째 필드를 정렬하려면 `--key=2,2' (`-k 2,2')를 사용하십시오.

관련 정보