Unix脚本删除CSV文件的第一行

Zen*_*hor 35 unix csv vi

我之前已经说过我不擅长编写脚本,所以我在下面将文件从共享目录复制到我的更改权限的地方.但后来我想删除每个CSV文件中的第一行 - 标题 - 然后我想让它每小时运行一次.

cd /users
scp dehpc14_Disk_Quota_Report.csv /h/u544835
scp dehpc14_User_Disk_Usage.csv /h/u544835
cd /h/u544835
chmod 755 dehpc14_Disk_Quota_Report.csv
chmod 755 dehpc14_User_Disk_Usage.csv
Run Code Online (Sandbox Code Playgroud)

*在这里插入删除csv第一行*

任何人都可以帮我删除CSV文件的第一行并让它每小时自动运行一次,或者指导我做一些我可能理解的事情来解决它?

Car*_*rós 88

您可以使用以下命令删除文件的第一行sed:

sed -i '' 1d file.csv
Run Code Online (Sandbox Code Playgroud)

如果您只想获取没有第一行的文件内容,并且没有修改文件,请删除-i ''标志:

sed 1d file.csv
Run Code Online (Sandbox Code Playgroud)

这里1d是要执行的命令:

  • 1 =>行在哪里行动
  • d =>删除

所以1d意味着'删除第1行'

如果你想获得第一行,你也可以使用sed:

sed -n 1p file.csv
Run Code Online (Sandbox Code Playgroud)

这里p代表'print'或

sed 1q file.csv
Run Code Online (Sandbox Code Playgroud)

(见William Pursell的评论)

  • 对于收到错误“1d:没有这样的文件或目录”的人,请执行此操作,而不是“sed -i '1d' filename.csv” (3认同)
  • 'sed 1p file.csv'示例将打印第一行两次,每隔一行打印一次.要仅打印第一行,您需要'sed -n 1p'(尽管更常见的是'sed 1q'并在打印一行后退出.) (2认同)
  • 请注意,此答案仅适用于 GNU `sed`;它不适用于 BSD `sed`,也可以在 Mac OS X 上找到。BSD `sed` 需要在 `-i` 后面加上后缀;如果您不需要后缀,请使用`-i ''`(带空格)。但是手册页明确建议不要这样做。有关详细信息,请参阅[在 Mac 上删除第一行的 Unix 脚本](http://stackoverflow.com/questions/29482817/)。其他 Unix 系统(AIX、HP-UX、Solaris 等)可能根本没有 `-i` 选项;[`sed`] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html) 的 POSIX 规范没有强制要求它 (2认同)

Tia*_*ica 16

我试图从 CSV 中删除第一行,cd 到该位置,然后问题的答案对我不起作用,正在获取

sed: 无法读取 1d: 没有那个文件或目录

因此,我使用了@amit在此处说明的以下内容

sed -i '1d' filename.csv
Run Code Online (Sandbox Code Playgroud)