2012-03-09 84 views
23

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

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 

*插入删除此处CSV第一行*

谁能帮我删除CSV文件的第一行,并得到这个自动运行每隔一小时,例如,或直接我我可能理解得到它的破解?

回答

66

可以使用sed删除文件的第一行:

sed -i '' 1d file.csv 

如果你只是想获得的文件的内容,而第一线,和没有修改文件,删除-i ''标志:

sed 1d file.csv 

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

  • =>行,其中行事
  • d =>删除

所以1D手段 '删除线1'

如果你想要得到的第一行,也可以用sed:

sed -n 1p file.csv 

这里p代表“打印”或

sed 1q file.csv 

(见威廉Pursell的评论)

+0

非常感谢的答案和解释 – Zenaphor 2012-03-09 11:29:17

+2

两个“sed的1P FILE.CSV”的示例将打印的第一行两次,每隔一行一次。要只打印第一行,你需要'sed -n 1p'(尽管'sed 1q'更常见,并且打印完一行后退出。) – 2012-03-09 17:33:28

+0

oopps @WilliamPursell你是对的。正在更新... – 2012-03-12 15:53:14

1

在寻找这个答案我也发现这个其他线程。在那里他们说使用尾巴,这实际上并没有做出OP想要的修改。您可能会过度复制到临时文件。此外,如果您要将文件流式传输到另一个工具,则可以在管道中使用“尾部”,而不必写入临时文件或写入磁盘。

How can I remove the first line of a text file using bash/sed script?

相关问题