我在 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
输出
插入 area_names 值(12,'纽约'); 插入 area_names 值(124,'NewYork'); 插入 area_names 值(125,'NewYork');
-k 位置1[,位置2] 指定一个排序字段,该字段由 POS1 和 POS2 (如果省略 POS2,则为行尾), _包括的_。 每个 POS 的形式为 `F[.C][OPTS]',其中 F 是 字段使用,C 是第一个字符的编号 字段的开头。字段和字符位置是 从 1 开始编号;POS2 中的字符位置为零 表示字段的最后一个字符。如果省略“.C” POS1,默认为1(字段的开头);如果省略 从 POS2 开始,它默认为 0(字段结尾)。OPTS 是 排序选项,允许根据以下条件对单个键进行排序 不同的规则;详情见下文。键可以跨越多个 字段。 例如:要按第二个字段排序,请使用 `--key=2,2' (`-k 2,2')。