我有一个像这样的文件(user.csv)
ip,hostname,user,group,encryption,aduser,adattr
想要按用户打印所有列排序,
我试过了awk -F ":" '{print|"$3 sort -n"}' user.csv
,不起作用。
Answers:
那怎么样sort
。
sort -t, -nk3 user.csv
哪里
-t,
-将分隔符定义为,
。
-n
-给您数值排序。已添加,因为您尝试添加它。如果您的用户字段仅是文本,则不需要它。
-k3
-定义字段(键)。用户是第三个字段。
sort -t, -nk3 filename.csv | sort -t, -nk6
-首先将按第3列排序,然后按第6列进行排序,因此第6列将一直正确排序,对于第6列相同的任何行,将按第3列进行排序。
sort -t ',' -k3,3n -k6,6n
会更好。-k3
将使用第3列和该行的其余部分。
假设用户ID不包含任何空格,请使用sed删除重复的用户ID。
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
已经知道如何按特定的列进行排序,但是这种技术(称为Schwartzian变换)在您要对其进行排序的字段并非定义明确的列时很有用。
您可以选择一个定界符,在这种情况下,我选择了一个冒号并打印了第一列,并按字母顺序排序:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
sort -t, -k3 file