第3栏如何使用awk排序?

时间:2021-01-06 19:29:55

I have a file (user.csv)like this

我有一个这样的文件(user.csv)。

ip,hostname,user,group,encryption,aduser,adattr

want to print all column sort by user,

想要按用户打印所有列排序,

I tried awk -F ":" '{print|"$3 sort -n"}' user.csv , it doesn't work.

我尝试了awk -F“:”“打印|”$3 sort -n“}”用户。csv,它不起作用。

5 个解决方案

#1


95  

How about just sort.

只是如何。

sort -t, -nk3 user.csv

where

在哪里

  • -t, - defines your delimiter as ,.

    -t, -定义你的分隔符为。

  • -n - gives you numerical sort. Added since you added it in your attempt. If your user field is text only then you dont need it.

    -n -给你数值排序。因为你在尝试中添加了它。如果您的用户字段是文本,那么您不需要它。

  • -k3 - defines the field (key). user is the third field.

    -k3 -定义字段(键)。用户是第三个字段。

#2


9  

  1. Use awk to put the user ID in front.
  2. 使用awk将用户ID放在前面。
  3. Sort
  4. 排序
  5. Use sed to remove the duplicate user ID, assuming user IDs do not contain any spaces.

    使用sed删除重复的用户ID,假设用户ID不包含任何空格。

    awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
    

#3


4  

try this -

试试这个,

awk '{print $0|"sort -t',' -nk3 "}' user.csv

OR

sort -t',' -nk3 user.csv

#4


3  

You can choose a delimiter, in this case I choose colon and print the column number one, sorting by alphabetical order.

您可以选择一个分隔符,在本例中,我选择冒号并打印列编号1,按字母顺序排序。

awk -f\: '{print $1|"sort -u"}' /etc/passwd

#5


2  

awk -F, '{ print $3, $0 }' user.csv | sort -nk2 

and for reverse order

和相反的顺序

awk -F, '{ print $3, $0 }' user.csv | sort -nrk2 

#1


95  

How about just sort.

只是如何。

sort -t, -nk3 user.csv

where

在哪里

  • -t, - defines your delimiter as ,.

    -t, -定义你的分隔符为。

  • -n - gives you numerical sort. Added since you added it in your attempt. If your user field is text only then you dont need it.

    -n -给你数值排序。因为你在尝试中添加了它。如果您的用户字段是文本,那么您不需要它。

  • -k3 - defines the field (key). user is the third field.

    -k3 -定义字段(键)。用户是第三个字段。

#2


9  

  1. Use awk to put the user ID in front.
  2. 使用awk将用户ID放在前面。
  3. Sort
  4. 排序
  5. Use sed to remove the duplicate user ID, assuming user IDs do not contain any spaces.

    使用sed删除重复的用户ID,假设用户ID不包含任何空格。

    awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
    

#3


4  

try this -

试试这个,

awk '{print $0|"sort -t',' -nk3 "}' user.csv

OR

sort -t',' -nk3 user.csv

#4


3  

You can choose a delimiter, in this case I choose colon and print the column number one, sorting by alphabetical order.

您可以选择一个分隔符,在本例中,我选择冒号并打印列编号1,按字母顺序排序。

awk -f\: '{print $1|"sort -u"}' /etc/passwd

#5


2  

awk -F, '{ print $3, $0 }' user.csv | sort -nk2 

and for reverse order

和相反的顺序

awk -F, '{ print $3, $0 }' user.csv | sort -nrk2