我被困在使用sort命令将students.txt
输出到4个单独的列中。我已经尝试过sort -k 4n
的路线,但是仍然行不通。
我希望能够将students.txt
输出到第一个awk
语句标题下的4列数据中:
awk 'BEGIN{printf "%-12s %-9s %-12s %-12s\n", "Family Name", "initials",
"Interviewer Initials", "Interview Time"}'
awk '{printf "%-12s %-9s %-12s %-12s\n", $1,$2,$3,$4}' | students.txt | sort -
k3.4
答案 0 :(得分:1)
您需要对分隔符进行排序。您的情况是逗号符号。 这是如何对逗号分隔的输入的第3列进行排序。
~ $ cat example.txt
foo,bar,baz
aoo,bug,bug
foo,zzz,boo
$ sort -t, -k 3 example.txt
foo,bar,baz
foo,zzz,boo
aoo,bug,bug
答案 1 :(得分:1)
我准备了一个名为students.txt的文件,听起来像您正在处理的文件。我将采访的结果添加到另一栏:
Smith A RCB 09:00 Good
Smith A TEA 12:00 Bad
Jones B DEF 12:00 Bad
Aaron A BZD 12:00 Ugly
Roberts C RCB 12:00 Good
Smith A JRR 10:30 Good
Aaron R RCB 10:30 Bad
此脚本应该足以使您了解排序所需的内容:
sort -k4,4 -k1,2 students.txt |
awk 'BEGIN {printf "%-12s %-9s %-20s %-20s\n", "Family Name", "Initials", "Interviewer Initials", "Interview Time"}
{printf "%-12s %-9s %-20s %-20s\n", $1,$2,$3,$4}'
结果是:
Family Name Initials Interviewer Initials Interview Time
Smith A RCB 09:00
Aaron R RCB 10:30
Smith A JRR 10:30
Aaron A BZD 12:00
Jones B DEF 12:00
Roberts C RCB 12:00
Smith A TEA 12:00
sort
正在使用空格来确定要对哪些字段进行排序。注意,我在第4列上进行排序,然后在第1列和第2列进行排序。如果在第4列之后省略了,4,则排序将一直进行到记录结束,因此Ugly采访将在12列中排在最后: 00条记录。awk
,BEGIN块将在启动时运行以打印标题。awk
块使用指定的格式打印出感兴趣的四列。