次のようなファイルがあります。
FirstName, FamilyName, Address, PhoneNumber
FamilyNameで並べ替える方法を教えてください。
次のようなファイルがあります。
FirstName, FamilyName, Address, PhoneNumber
FamilyNameで並べ替える方法を教えてください。
回答:
これがUNIXの場合:
sort -k 2 file.txt
複数の-k
フラグを使用して、複数の列でソートできます。たとえば、姓で分類し、次にタイブレーカーとして名で並べ替えるには、次のようにします。
sort -k 2,2 -k 1,1 file.txt
「man sort」の関連オプション:
-k、-key = POS1 [、POS2]
POS1でキーを開始し、POS2で終了します(原点1)
POSはF [.C] [OPTS]で、Fはフィールド番号、Cはフィールド内の文字位置です。OPTSは、1つ以上の1文字の順序付けオプションで、そのキーのグローバル順序付けオプションをオーバーライドします。キーを指定しない場合は、行全体をキーとして使用します。
-t、-field-separator = SEP
非空白から空白への遷移の代わりにSEPを使用する
--field-separator=','
「Billy Bob」などの「名」の値にデータ入力演算子のタイプを入力する可能性がある場合は、少し注意して使用してください...データを守らないと、スペースが簡単にデータに入りますが、カンマは比較的ありそうもない。
-b
オプションを使用する必要があることに注意してください。これは、sort
並べ替える文字列が列の最初の文字からではなく、カンマの直後から始まることを実際に考慮しているためです。また、LC_ALL=C
単純なASCIIファイルでも発生する可能性があるロケールによる副作用を回避するために、コマンドの前にを付ける必要がある場合があります。
-b
(--ignore-leading-blanks
)の部分をありがとう。ビットを明確にする:echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2
与えるa<SPACE><SPACE>b
(2番目の列は最初の後に開始する最初のnon-blank to blank transition
、および<SPACE><SPACE>b
前にある<SPACE>a
)が、と-b
それが与えるaa<SPACE>a
予想通り(a
前にありますb
)。