我有一個csv文件,其中的字段用「;」分隔。有8個字段,我想排序我的數據的前4列,按遞增順序(首先按列1,然後列2等排序)bash:按前4列對csv文件進行排序
我怎麼能做到這一點從Linux的命令行?
我試着用開放式辦公室,但它只讓我選擇3列。
編輯:在我想對數據進行排序的字段中,三個字段包含帶有數值的字符串,一個字符串。我怎樣才能用sort
命令指定呢?
我有一個csv文件,其中的字段用「;」分隔。有8個字段,我想排序我的數據的前4列,按遞增順序(首先按列1,然後列2等排序)bash:按前4列對csv文件進行排序
我怎麼能做到這一點從Linux的命令行?
我試着用開放式辦公室,但它只讓我選擇3列。
編輯:在我想對數據進行排序的字段中,三個字段包含帶有數值的字符串,一個字符串。我怎樣才能用sort
命令指定呢?
嘗試:
sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n test.txt
如:
1;2;100;4
1;2;3;4
10;1;2;3
9;1;2;3
> sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n temp3
1;2;3;4
1;2;100;4
9;1;2;3
10;1;2;3
sort -k
將允許您定義排序鍵。從man sort
:
-k, --key=POS1[,POS2]
start a key at POS1 (origin 1), end it at POS2 (default end of line).
所以
$ sort -t\; -k1,4
應該這樣做。請注意,我已經逃脫了分號,否則shell會將其解釋爲語句結束。
謝謝。 'sort'是否也允許爲每個字段指定是否要按數字或按字母順序排序? (看我最後一次編輯) – 2012-08-13 13:20:22
謝謝。 '1,1n'在這裏的含義是什麼? – 2012-08-13 13:18:03
按數字排序 – Vijay 2012-08-13 13:21:24
噢好的。因此,假設字段3包含字符串,我將執行'-k 3,3d'按字典順序排序,對吧? – 2012-08-13 13:26:01