열 26의 일반 숫자 값을 기준으로 정렬하려는 세미콜론으로 구분된 필드가 있는 파일이 있습니다. 나는 이것을 시도했습니다 :
cat file.txt | grep -v setch | sort -t";" -k26 -g
grep 명령은 내가 원하지 않는 일부 줄을 필터링하는 데 사용됩니다.
grep 명령 뒤의 파일은 다음과 같습니다.
5;0;0;0;0;17;0.040000;3.00;17;0.030000;2.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;;;;;;;33.15;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.020000;3.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.18901342e+02;-7.78309691e+01;-7.78225676e+01;-7.78079745e+01;-7.77838466e+01;;39.3333333333333;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.020000;20.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.78309996e+01;-7.78285783e+01;-7.78259409e+01;-7.78212922e+01;-7.78200550e+01;;39.8166666666667;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.030000;3.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-9.38492178e+02;-5.44898488e+02;-7.78311132e+01;-7.78228037e+01;-7.78082194e+01;;40.6166666666667;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.030000;8.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.78321216e+01;-7.78265847e+01;-7.78213151e+01;-7.78175760e+01;-7.78102439e+01;;40.4833333333333;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.030000;15.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.78326108e+01;-7.78282041e+01;-7.78246496e+01;-7.78216823e+01;-7.78198536e+01;;40.0333333333333;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.020000;15.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.78317280e+01;-7.78275891e+01;-7.78237230e+01;-7.78209144e+01;-7.78197521e+01;;44.3;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.030000;10.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.78322942e+01;-7.78274590e+01;-7.78225495e+01;-7.78192915e+01;-7.78148301e+01;;43.65;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.020000;8.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.78322863e+01;-7.78266434e+01;-7.78211618e+01;-7.78173451e+01;-7.78097348e+01;;45.4833333333333;;X;;E;
5;0;0;0;0;17;0.040000;3.00;17;0.030000;4.00;17;0.040000;7.00;11.5833330154419;11.5833330154419;11.5833330154419;0.522556364536285;312.500000000000;-1384.20000000000;39.0625000000000;6000.00000000000;;;;-7.61265100e+02;-7.78321802e+01;-7.78247066e+01;-7.78104129e+01;-7.78053976e+01;;44.8833333333333;;X;;E;
그러나 출력은 일반적인 숫자 값에 따라 정렬되지 않고 수치적으로(제곱수를 참조하지 않고) 정렬됩니다.
내가 원하는 것을 하기 위해 내가 할 수 있는 일이 있나요?
업데이트: 이는 위 파이프라인의 출력(관련 열만 표시)과 sort -t\; -g -k26,26
답변에 제안된 출력입니다.
-9.38492178e+02
-7.78317280e+01
-7.78309996e+01
-7.18901342e+02
-7.78322863e+01
-7.78322942e+01
-7.78326108e+01
-7.61265100e+02
-7.78321216e+01
답변1
다음 두 파이프라인 간의 출력 차이에 유의하세요.
<yourexample \
sort -t\; -gk26 |
cut -d\; -f26
-7.18901342e+02
-7.78309996e+01
-9.38492178e+02
-7.78321216e+01
-7.78326108e+01
-7.78317280e+01
-7.78322942e+01
-7.78322863e+01
-7.61265100e+02
...그리고...
<yourexample \
sort -t\; -gk26,26 |
cut -d\; -f26
-9.38492178e+02
-7.61265100e+02
-7.18901342e+02
-7.78326108e+01
-7.78322942e+01
-7.78322863e+01
-7.78321216e+01
-7.78317280e+01
-7.78309996e+01
종류오직ey 26 -k
정렬과 동일~에서키 26은 줄 끝까지 이어지지만 -k
ey 26,26으로 정렬됩니다 .오직그 열쇠에. 정렬 순서의 다른 필드를 순위결정자로 처리하려면 -k
ey를 더 추가하되 구체적으로 지정하세요.
이 모든 것을 제쳐두고,당신은 댓글을 달았습니다당신은 a와 이야기하고 있습니다5년 된 GNU Coreutils팩. 궁금합니다. 귀하의 릴리스 이후 일부 변경 로그를 건너뛰었는데 이것이 두 릴리스 사이에서 두드러집니다.(v8.6, 2010년 10월):
sort -g
이제 더 넓은 범위와 정밀도를 위해 긴 복식을 사용합니다.
sort -h
선행 또는 후행 숫자가 있는 숫자는 더 이상 거부되지 않으며.
배수가 있는 숫자는 더 이상 허용되지 않습니다.
. 이제 모든 0이 동일한 것으로 간주됩니다.
업데이트할 수 있습니다.