テキストファイルを列で並べ替える可能性はあるのでしょうか。例えば
私はaux1.txt
このような行を持っています
Name SecondName Grade
シェルで私はこれを行うことができます
sort -r -k 3 aux1
3列目(グレード)でファイルを並べ替えます。
バッチで
sort /+3 < aux1.txt
3番目の文字の後にファイルを並べ替えます。
バッチのソートマニュアルを読みましたが、結果がありません。
テキストファイルを列で並べ替える可能性はあるのでしょうか。例えば
私はaux1.txt
このような行を持っています
Name SecondName Grade
シェルで私はこれを行うことができます
sort -r -k 3 aux1
3列目(グレード)でファイルを並べ替えます。
バッチで
sort /+3 < aux1.txt
3番目の文字の後にファイルを並べ替えます。
バッチのソートマニュアルを読みましたが、結果がありません。
バッチ ファイルを使用して 、独自のソート ラッパーを作成できます。
列を一時ファイルに
並べ替え、並べ替えて元に戻すだけです。(ほぼ明らか)
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
)
手遅れかもしれませんが、一般的なアドバイスとして、一時ファイルを作成するよりもはるかに簡単に行うことができます。並べ替えを介してすべてをパイプするだけです:
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
これは単一のコマンドであり、バッチ ファイルをまったく使用せずにコマンド プロンプトで入力するだけで使用できることに注意してください (もちろん、そのためには %% を減らす必要があります)。
私はJebの答えが本当に好きですが、Chris LaRosaの TextDBツールを何年も使用しています。
複数の列を並べ替えたり、別のツール (または他の CL ツール) をパイプしたりできます。なんか古い…