次の項目を含むファイルを並べ替えようとしています。
Essie | Vaill | 14225 Hancock Dr | Anchorage | AK | 99515 907-345-0962
「|」は様々なサイズのタグを示す。私はこれを2番目のフィールドに基づいてソートしようとしています。この場合、姓はアルファベット順にソートされます。たとえば、いくつかの異なるコマンドを試しました(アドレス.txtはファイル名です)。
sort -k 2 addresses.txt
sort -t$'\t' -k2 addresses.txt
sort -t "`/bin/echo '\t'`" -k 2 addresses.txt
これらのどれも私が望む結果を得ておらず、インターネットを検索した後も必要な方法で動作する解決策を見つけることができませんでした。誰かが2番目の列をアルファベット順にソートする方法を見つけるのに役立つことができればとても感謝します。
答え1
これを試してみることはできますか?
sort -t"|" -k2 address.txt
私の考えにはこれがうまくいくと思います。
答え2
Perlのより一般的なアプローチです。スペースが通常のスペースやタブとは異なる方法でエンコードされている場合は、次のことが役立ちます。
perl -aF'[[:blank:]]+' -nle '
$lines{$_}=[@F];
END{
print for sort { $lines{$a}[1] cmp $lines{$b}[1] } keys %lines
}' your_file
しかしsort
。