
我在 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”)。