如果a有一个平面文件数据库,其中的字段由空格分隔,如下所示:
Name Salary_cost function
Luc 50000 Engineer in mechanics
Gerard 35000 Bad in all, good at nothing
Martijn 150000 Director
Robert 45000 Java Specialist
(...)
我想通过Salary_cost订购这些东西。我可以用这种东西来订购
cat file.txt | sed-e 's/ \+/\t/g' | sort -k 2
但这不好,因为
我想过像Recutils这样的东西。但是我无法掌握如何将它用于此目的。
我可以通过“Salary_cost”字段对此文件进行排序,将其他行视为记录,将第一行视为数据头,使用命令行界面(bash,sh,ksh,...)?
有很多接口可以产生这样的输出,例如:df,transmission-remote,ps,......即使是昏迷分离的文件也接近这个结构。
答案 0 :(得分:1)
您可以使用带有排序的头部,尾部组合:
fld="Salary_cost"
n=$(awk -v q="$fld" 'NR==1{for (i=1; i<=NF; i++) if ($i==q) {print i; exit}}' file)
head -1 file && tail -n +2 file | sort -nk$n
Name Salary_cost function
Gerard 35000 Bad in all, good at nothing
Robert 45000 Java Specialist
Luc 50000 Engineer in mechanics
Martijn 150000 Director