bash – 在unix命令行中删除文件的前N行
发布时间:2020-12-15 18:26:04 所属栏目:安全 来源:网络整理
导读:我正在尝试从非常非常大的文件中删除前37行.我开始尝试使用sed和awk,但它们似乎需要将数据复制到新文件中.我正在寻找一个“删除就地线”的方法,与sed -i不同,它不是制作任何类型的副本,而只是从现有文件中删除行. 这就是我所做的…… awk 'NR 37' file.xml '
我正在尝试从非常非常大的文件中删除前37行.我开始尝试使用sed和awk,但它们似乎需要将数据复制到新文件中.我正在寻找一个“删除就地线”的方法,与sed -i不同,它不是制作任何类型的副本,而只是从现有文件中删除行.
这就是我所做的…… awk 'NR > 37' file.xml > 'f2.xml' sed -i '1,37d' file.xml 这两个似乎都做了完整的副本.是否还有其他简单的CLI可以在没有完整文档遍历的情况下快速完成此操作?
使用UNIX实用程序进行内部编辑没有简单的方法,但这里有一个就地文件修改解决方案,您可以修改它以便为您工作(由Robert Bonomi在
https://groups.google.com/forum/#!topic/comp.unix.shell/5PRRZIP0v64提供):
count=$(head -37 "$file" |wc -c) dd if="$file" bs="$count" skip=1 of="$file" 最终文件应该比原始文件小$count个字节(因为目标是从头开始删除$count个字节),所以要完成我们必须删除最后的$count个字节.在诸如Linux的GNU系统上,这可以通过以下方式实现: truncate -s "-$count" "$file" 请参阅我引用的google groups主题以获取其他建议和信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |