![按第一列对 CSV 文件进行排序,忽略标题](https://linux22.com/image/105469/%E6%8C%89%E7%AC%AC%E4%B8%80%E5%88%97%E5%AF%B9%20CSV%20%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F%EF%BC%8C%E5%BF%BD%E7%95%A5%E6%A0%87%E9%A2%98.png)
如何按第一列对 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
如果文件没有标题,则使用。