按第一列对 CSV 文件进行排序,忽略标题

按第一列对 CSV 文件进行排序,忽略标题

如何按第一列对 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如果文件没有标题,则使用。

相关内容