linux输出文件首行,Linux:提取文件的第一行

编辑:您不能使用我的旧答案(见下文)与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 '%s\n' 1p d wq | ed -s file.txt)

在每次调用时,您将获得变量firstline中文件file.txt的第一行,并从文件中删除此行.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值