无论我用 cut、awk、sed 或 grep 做什么,它都会先按 ID 排序,然后按姓氏排序,最后按名字排序,而实际上应该按姓氏排序,所以它看起来应该是这样的
f132b02: Kiara Acevedo
f132a01: Caleb Barn
但它按 ID 排序,而不是按姓氏字母排序,输出如下所示
f132a01: Barn, Caleb
f132b02: Acevedo, Kiara
我正在检索的文件夹中的信息是从“〜/ Homework4 / etc / passwd”中提取的,并尝试对下面的ID进行排序
f132a01:Barn Caleb
f132a02:Casey Nathan
f132a03:Sanchez Ana
f132a04:Thomas Jeff
f132a05:Cavhill Jared
f132b01:Johnson Andrew
f132b02:Acevedo Kiara
f132b03:Felaccio Steven
f132b05:Blotner Sam
f132b06:Pereira Brian
我一直在尝试的代码如下:
输入:
cut -d: -f1,5 /etc/passwd | grep f132 | \
username, first name, and last name
sed -E 's/(.*), (.*) (.*)/\1 \2 \3/' | \
sort -k3
echo
count=$(cut -d: -f1,5 /etc/passwd | grep f132 | wc -l)
echo "Number of students in the class: $count"
输出:
f132a01:Barn Caleb
f132a02:Casey Nathan
f132a03:Sanchez Ana
f132a04:Thomas Jeff
f132a05:Cavhill Jared
f132b01:Johnson Andrew
f132b02:Acevedo Kiara
f132b03:Felaccio Steven
f132b05:Blotner Sam
f132b06:Pereira Brian
从您的描述来看,您可能只是想对此输入进行排序:
按名称,在这种情况下您所需要的是:
但是您还说“但需要格式化 ID、名字、姓氏”,那么也许您想要的是这个:
使用
gawk
: