
sort
私は主に1つのフィールドを渡してから別のフィールドを渡すことが可能であることを知っています。たとえば、
$ echo -e "1 5\n1 4\n8 2\n1 9" | sort -k 1,1n -k 2,2n
1 4
1 5
1 9
8 2
$
しかし、私は正しいですか?常にsort
行をそのまま維持します。たとえば、出力が次のようにソートすることは不可能です。
1 2
1 4
1 5
8 9
これが不可能な場合、sort
正しいツールは何ですか?
答え1
〜のようにトムジチ有名な
paste -d ' ' <(echo -e "1 5\n1 4\n8 2\n1 9" |
cut -f1 -d' ' |
sort -n
) <(echo -e "1 5\n1 4\n8 2\n1 9" |
cut -f2 -d' ' |
sort -n
)
答え2
これにより、最初に行をフィールドに分割し、各フィールドは独自のファイルに移動します。これはcut
または他のさまざまなツールを使用してawk
実行できます。次に、sort
各ファイルを分離します。それからpaste
彼らはまた集まった。