Linux:提取文件的第一行
发布时间:2020-12-14 00:30:49 所属栏目:Linux 来源:网络整理
导读:我正在使用OpenWrt和一个非常小的空间. 试图从文件中提取第一行.该行需要进入变量并从文件中删除.我可以使用head将它放入变量但不能使用tail,因为据我所知,我将不得不做尾文件 newFile和我没有空间存放第二个文件. 有人知道一个更好的技术吗? 解决方法 编辑
我正在使用OpenWrt和一个非常小的空间.
试图从文件中提取第一行.该行需要进入变量并从文件中删除.我可以使用head将它放入变量但不能使用tail,因为据我所知,我将不得不做尾文件> newFile和我没有空间存放第二个文件. 有人知道一个更好的技术吗? 解决方法
编辑:您不能使用我的旧答案(见下文)与OpenWrt,因为OpenWrt不附带ed.多可惜.所以这里有两种方法:
vi方式 vi也是一个真正的编辑器,所以以下内容将起作用: vi -c ':1d' -c ':wq' file > /dev/null 我们用vi打开文件,并使用命令:1d删除第一行,然后:wq保存并退出,将所有输出重定向到/ dev / null.凉爽,干净,简洁. 哦,你当然会跑: firstline=$(head -n1 file) 在运行此vi命令之前,将文件的第一行放入变量firstline. 注意.在内存很少的系统上,当文件很大时,此方法失败. dd方式 dd是一个很酷的工具.其他答案中给出的dd方法确实很棒,但它们依赖于openWrt不附带的truncate实用程序.这是一个解决方法: firstline=$(head -n1 file) linelength=$(head -n1 file | wc -c) newsize=$(( $(wc -c < file) - $linelength )) dd if=file of=file bs=1 skip=$linelength conv=notrunc dd if=/dev/null of=file bs=1 count=0 seek=$newsize 这将适用于大文件和非常小的内存!最后一个dd命令扮演其他答案中给出的truncate命令的角色. 旧答案是: 您可以使用ed: firstline=$(printf '%sn' 1p d wq | ed -s file.txt) 在每次调用时,您将获得变量firstline中文件file.txt的第一行,并从文件中删除此行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |