我有一个像这样的文件:
FirstName, FamilyName, Address, PhoneNumber
如何按FamilyName排序?
我有一个像这样的文件:
FirstName, FamilyName, Address, PhoneNumber
如何按FamilyName排序?
Answers:
如果是UNIX:
sort -k 2 file.txt
您可以使用多个-k
标志对多个列进行排序。例如,要按姓氏排序,然后按姓氏排序:
sort -k 2,2 -k 1,1 file.txt
“人排序”中的相关选项:
-k,--key = POS1 [,POS2]
在POS1处开始一个密钥,在POS2处结束(起源1)
POS是F [.C] [OPTS],其中F是字段编号,C是字段中的字符位置。OPTS是一个或多个单字母排序选项,它会覆盖该键的全局排序选项。如果没有给出密钥,则使用整行作为密钥。
-t,--field-separator = SEP
使用SEP而不是非空白到空白的过渡
--field-separator=','
如果您可能需要数据输入运算符键入“名字”(例如“ Billy Bob”)之类的值,则要小心一点。逗号相对不太可能。
-b
选项。这是因为sort
实际上正在考虑要排序的字符串仅在逗号之后而不是从列的第一个字母开始。另外,您可能需要在命令前加上LC_ALL=C
,以避免由于语言环境而产生的任何副作用,即使在简单的ASCII文件中,该副作用也可能发生。
-b
(--ignore-leading-blanks
)上的发言。为了澄清一点:首先echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2
给出a<SPACE><SPACE>b
(第二列在first之后non-blank to blank transition
,并且<SPACE><SPACE>b
在之前<SPACE>a
),但是随着-b
给出的结果aa<SPACE>a
(a
在before b
)。
sort -nk2 file.txt
因此,您可以更改列号。