Linux sort 指令:如何對欄位中嵌入的數字進行排序?

Linux sort 指令:如何對欄位中嵌入的數字進行排序?

我在 RHEL 6 上使用 BASH。

我正在嘗試按字段中嵌入的數字對文件中的某些行進行排序。文件的名稱是word.txt。

這是我正在使用的命令:

sort -n -k4 word.txt

這是我得到的輸出,不按數字順序排列:

INSERT INTO area_names VALUES(124,'NewYork');
INSERT INTO area_names VALUES(125,'NewYork');
INSERT INTO area_names VALUES(12,'NewYork');

顯然,只有「12」的行應該放在第一行。

“VALUES(”之後的數字可以是任意長度

如何告訴 sort 對 "VALUES(" 和 "," 之間的數字進行排序?

我可以依靠在資料中的“VALUES(”之後添加空格的解決方法,但我寧願不這樣做,除非這是最佳選擇。

答案1

嘗試這個:

 sort -t "(" -k2,2 -n word.txt

輸出

INSERT INTO area_names VALUES(12,'紐約');
INSERT INTO area_names VALUES(124,'紐約');
INSERT INTO area_names VALUES(125,'紐約');

-k POS1[,POS2]

     指定由之間的行部分組成的排序字段
     POS1 和 POS2(或行尾,如果省略 POS2),
     _包括的_。

     每個 POS 的格式為“F[.C][OPTS]”,其中 F 是 POS 的編號
     要使用的字段,C 是第一個字元的編號
     字段的開始。字段和字元位置是
     編號從1開始; POS2 中字元位置為零
     表示該欄位的最後一個字元。如果省略‘.C’
     POS1,預設為1(字段開頭);如果省略
     從 POS2 開始,它預設為 0(字段末尾)。選項是
     排序選項,允許對各個鍵進行排序
     遵守不同的規則;詳情請參見下文。鍵可以跨越多個
     字段。

     範例:若要對第二個欄位進行排序,請使用“--key=2,2”(“-k 2,2”)。

相關內容