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

nor*_*nen 8 sort csv

我将如何按第一列对 CSV 文件进行排序,其中第一列是小写字符串,而忽略标题行?

Geo*_*iou 9

sort没有排除标题的选项。您可以使用以下方法删除标题:

tail -n+2 yourfile | sort 
Run Code Online (Sandbox Code Playgroud)

此尾部语法yourfile从第二行到文件末尾。

当然,结果sort将不包括标题。

您可以使用命令隔离标题,该命令head -n1 yourfile将仅打印文件的第一行(您的标题)。

要将它们组合在一起,您可以运行:

head -n1 yourfile && tail -n+2 yourfile | sort
Run Code Online (Sandbox Code Playgroud)


gle*_*man 8

我假设您想保留标题:将文件的内容重定向到分组结构中:

{
    # grab the header and print it untouched
    IFS= read -r header
    echo "$header"
    # now process the rest of the input
    sort
} < file.csv
Run Code Online (Sandbox Code Playgroud)


Kus*_*nda 5

使用 csvkit

$ csvsort -c 1 file.csv
Run Code Online (Sandbox Code Playgroud)

要不就

$ csvsort file.csv
Run Code Online (Sandbox Code Playgroud)

不同之处在于,第一个命令将仅使用第一列,而第二个命令将使用全部(就像sort这样做)。

csvkit工具假定输入 CSV 文件的第一行有标题行。-H如果文件没有标题,则使用。

  • 提示:可以使用 Homebrew 和“brew install csvkit”来安装“csvkit”。便利! (3认同)