微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将最后n行复制到新文件,然后从原始文件中删除n行

所以我有一个文件,我想移动最后3000行到另一个不同的文件,然后从原来创build一个新的文件没有最后3000行。

我正在使用Mac,我使用的命令如下:

tail -n 3000 fer2017-testing-reduced.arff >> fer2017-training-reduced-3000-more-instances.arff; head -n -3000 fer2017-testing-reduced.arff > fer2017-testing-reduced-3000-less-instances.arff

但是,当我运行这个,我得到的错误

head: illegal line count -- -3000

我不确定我哪里出了问题,或者这可能是一个mac问题?

将数据从java传递给cupsfilter

什么是用相同的inode查找所有文件的最快方法

如果没有指定文件,为什么不grep工作?

bash不承认双位数字

如何将stdout + stderrredirect到一个文件,同时保持stream分离?

cut或awk命令打印第一行的第一个字段

使用sed用w命令显示空闲时间最长的用户

在Windows上的Ubuntu的bash – rlwrap无法打开主pty

Cgi-bin脚本来捕捉用户拥有的文件

如何在bash脚本中正确地将文件名传递给其他程序?

不是所有版本的head支持负数行数。 在macOS上安装的认不是。

如果你安装了coreutils (如果你已经安装了Homebrew,你可以这样做: brew install coreutils ),你应该可以使用ghead -n -3000 。

如果允许其他工具,也许去sed

sed -n '3000,${p}' file > filenew # print lines 3000 to end to new file sed -i '3000,${d}' file # Use inplace edit to delete lines 3000 to end from orig.

这里的优点是$ auto匹配最后一行。

阅读更多的信息,为什么POSIX head和tail不具有相同的功能 ,POSIX版本的head不接受-n选项的负整数。

从POSIX head命令文档中查询

-n number每个输入文件的第一个数字行应复制到标准输出。 应用程序应确保number选项参数是一个正整数。

你最好改变head -n -3000 tail -n +3001从行3000开始到文件结束。 或者使用GNU支持的head命令,这个命令在Mac上可以作为GNU coreutils的一部分使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐