【发布时间】:2015-05-29 02:58:23
【问题描述】:
我有一个大型 csv 文件,我需要每天通过一项 cron 作业将其减少到最后 1000 行。
谁能建议如何做到这一点?
到目前为止,我有两个命令,但不知道如何组合它们
从文件开头删除行的命令是
ed -s file.csv <<< $'1,123d\nwq'
其中 123 是需要从文件开头删除的行数
读取文件行数的命令是
wc -l file.csv
我需要从中减去 1000 并将结果传递给第一个命令 有什么办法可以把 wc 命令的结果合并到 ed 命令中?
提前谢谢你
【问题讨论】:
-
使用:
tail -n -1000 file > newfile; mv newfile file -
庇护这行得通,但如果我可以编辑文件而不创建新文件会更方便。
-
轻微改进:
tail -n 1000 file > newfile; cat newfile > file; rm newfile这保留了“文件”的所有权。如果您从 cronjob 以 root 身份运行,mv 将意味着文件最终归 root 所有。