2012-04-16 2 views
2

텍스트 파일을 열별로 정렬 할 수있는 확실성이 있는지 궁금합니다. 예를파일의 열별로 일괄 정렬

위해 나는 내가 그것은 3 열 (등급)하여 파일을 정렬이

sort -r -k 3 aux1 

을 할 수있는 쉘에서이

Name SecondName Grade 

같은 행이 aux1.txt 있습니다. 배치

sort /+3 < aux1.txt 

에서

는 3 편지 한 후 파일을 정렬합니다.

배치에 대해서는 정렬 매뉴얼을 읽었지만 결과는 없습니다.

답변

5

정렬 래퍼을 배치 파일로 작성할 수 있습니다.

열을 임시 파일로 다시 정렬해야
을 정렬하고 다시 정렬하면됩니다. 정말 젭의 대답처럼, 필자는 TextDB tools 년 동안 크리스 LaRosa의 사용하고 있지만

REM *** Get the desired colum and place it as first column in the temporary file 
setlocal DisableDelayedExpansion 
(
    for /F "tokens=1-3 delims= " %%A in (aux1.txt) DO (
     set "par1=%%A" 
     set "par2=%%B" 
     set "par3=%%C" 
     setlocal EnableDelayedExpansion 
     echo(!par2! !par1! !par2! !par3! 
     endlocal 
) 
) > aux1.txt.tmp 

REM ** Now sort the first colum, but echo only the rest of the line 
for /F "usebackq tokens=1,* delims= " %%A in (`sort /r aux1.txt.tmp`) DO (
    echo(%%B 
) 
+0

감사합니다. 작동합니다! – vladCovaliov

0

(거의 분명).

여러 개의 열을 정렬하고 다른 도구 (또는 다른 CL 도구)를 파이프 할 수 있습니다. 오래된 것 ...

1

너무 늦을 수도 있지만 일반적인 조언으로 임시 파일을 만드는 것보다 훨씬 간단하게 처리 할 수 ​​있습니다. 일종의을 통해 그냥 파이프 모두 :

for /f "tokens=1-3" %%a in ('(for /f "tokens=1-3" %%x in (aux1.txt^) do @echo %%z %%x %%y^)^|sort') do echo %%b %%c %%a 

주, 그것은 하나의 명령이고 모두에서 어떤 배치 파일없이 명령 프롬프트에 입력하여 바로 사용할 수 있다는 (물론,의 그것을위한 %% 감소해야).

관련 문제