如何按第一列对 CSV 文件进行排序,其中第一列是小写字符串,忽略标题行?
答案1
sort
没有排除标头的选项。您可以使用以下方法删除标头:
tail -n+2 yourfile | sort
此尾部语法yourfile
从第二行到文件末尾。
当然结果sort
不会包含头部。
您可以使用命令隔离标题head -n1 yourfile
,该命令将仅打印文件的第一行(标题)。
要将它们组合在一起,您可以运行:
head -n1 yourfile && tail -n+2 yourfile | sort
答案2
我假设您想保留标题:将文件的内容重定向到分组结构中:
{
# grab the header and print it untouched
IFS= read -r header
echo "$header"
# now process the rest of the input
sort
} < file.csv
答案3
使用 csvkit
:
$ csvsort -c 1 file.csv
要不就
$ csvsort file.csv
不同之处在于,第一个命令将仅使用第一列,而第二个命令将使用全部(就像这样sort
做)。
该csvkit
工具假定输入 CSV 文件的第一行有标题行。-H
如果文件没有标题,则使用。