我有一个这样的文件:
FirstName, FamilyName, Address, PhoneNumber
如何按FamilyName对其进行排序?
答案 0 :(得分:129)
如果是UNIX:
sort -k 2 file.txt
您可以使用多个-k
标记对多个列进行排序。例如,要按姓氏排序,请将名字命名为平局:
sort -k 2,2 -k 1,1 file.txt
“man sort”中的相关选项:
-k, - key = POS1 [,POS2]
在POS1开始一个键,在POS2(原点1)结束
POS是F [.C] [OPTS],其中F是字段编号,C是字段中的字符位置。 OPTS是一个或多个单字母排序选项,它覆盖该键的全局排序选项。如果没有给出密钥,请使用整行作为密钥。
-t, - field-separator = SEP
使用SEP代替非空白到空白转换
答案 1 :(得分:7)
仅按第二个字段排序(因此第二个字段匹配时,那些匹配的行保持原始顺序而不在其他字段上排序):
sort -k 2,2 -s orig_file > sorted_file
答案 2 :(得分:2)
sort -nk2 file.txt
因此,您可以更改列号。
答案 3 :(得分:2)
FWIW,这是一种排序方法,用于显示哪些进程正在使用最大的内存。
memstat | sort -k 1 -t':' -g -r | less
排序选项设置为第一列,使用:作为列分隔符,数字排序和反向排序。
答案 4 :(得分:0)
如果您喜欢编写JS,则可以使用smk(https://www.npmjs.com/package/smk)
npm install -g smk
cat orig_file | smk -a -f"(arr) => arr.map((row) => row.split(',')).sort((a,b) => a[1]===b[1] ? 0: (a[1] < b[1] ? -1 : 1)).map((row) => row.join(',')).join('\r\n')"