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
끝 필드 번호가 없으면 -k
1부터 시작하는 모든 필드를 고려합니다. 당신이 필요로 할:
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