我有3個領域的一個非常簡單的文本文件,每次用空格隔開sort命令不起作用,像以下:預期
123 15 0 123 14 0 345 12 0 345 11 0
我發出某種命令由第一排序列:sort -k 1 myfile
。但它不會排在第一列。它按整行排序,得到以下結果:
123 14 0 123 15 0 345 11 0 345 12 0
我的命令或文件有什麼問題嗎?
我有3個領域的一個非常簡單的文本文件,每次用空格隔開sort命令不起作用,像以下:預期
123 15 0 123 14 0 345 12 0 345 11 0
我發出某種命令由第一排序列:sort -k 1 myfile
。但它不會排在第一列。它按整行排序,得到以下結果:
123 14 0 123 15 0 345 11 0 345 12 0
我的命令或文件有什麼問題嗎?
您需要使用:
sort -k 1,1 -s myfile
如果要排序僅在第一個字段。此語法指定排序的開始和結束字段。 sort -k 1
表示從第一個字段開始直到行尾。爲確保線路保持與排序鍵相同的輸入相同的順序,您需要使用-s
標誌(GNU)進行穩定排序。
從sort(1)
手冊頁請參閱本:
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.
The --stable (-s) option disables this last-resort comparison so that
lines in which all fields compare equal are left in their original relative
order.
默認情況下,sort命令在整行上排序。 你應該使用-k選項來指定哪一列作爲排序索引。
但它仍然是第一列排序。你期望輸出什麼? – Annjawn
它也排序第二列,我不想要。實際上它排序整個行,即使我指定-k1 – Ryan
您的文件中的數據已經按第一列排序。 – Annjawn