所以我有一个文件,我想移动最后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
如果没有指定文件,为什么不grep工作?
bash不承认双位数字
如何将stdout + stderrredirect到一个文件,同时保持stream分离?
cut或awk命令打印第一行的第一个字段
在Windows上的Ubuntu的bash – rlwrap无法打开主pty
如何在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] 举报,一经查实,本站将立刻删除。