명령을 잘못된 순서로 정렬

명령을 잘못된 순서로 정렬

sort 명령을 사용하여 "|"(파이프 문자)로 구분된 데이터를 처리하는 방법은 무엇입니까?

두 개의 필드가 있는 "x"라는 이름의 예제 파일을 고려해 보세요.

axis-AXIS|OK
axis-AXISR|OK
axis-AXISD2X|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXIS1RX|OK
axis-AXISR1M|OK
axis-AXISD2|FALSE
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISE|OK
axis-AXISD|OK

내 로케일:

echo $LC_ALL
C

정렬되면 문자 "|"가 이상한 분류를 생성하는 열쇠의 일부인 것 같습니다.

sort -t"|" x

axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXISD2X|OK
axis-AXISD2|FALSE
axis-AXISD|OK
axis-AXISE|OK
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISR1M|OK
axis-AXISR|OK
axis-AXIS|OK

지정된 필드 키 sort -t"|" -k1 x에는 변경 사항이 없습니다 .

답변1

끝 필드 번호가 없으면 -k1부터 시작하는 모든 필드를 고려합니다. 당신이 필요로 할:

sort -k1,1 -t'|' file.txt

시험:

$ sort -k1,1 -t'|' file.txt 
axis-AXIS|OK
axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD|OK
axis-AXISD1|OK
axis-AXISD2|FALSE
axis-AXISD2X|OK
axis-AXISE|OK
axis-AXISM|FALSE
axis-AXISMD|FALSE
axis-AXISR|OK
axis-AXISR1M|OK

locale그렇지 않은 경우 C즉시 설정할 수 있습니다.

LC_ALL=C sort -k1,1 -t'|' file.txt

관련 정보