繁体   English   中英

从bash的STDOUT移除n行

[英]remove n lines from STDOUT on bash

您是否有任何bash解决方案可从stdout中删除N行?

像“ head”命令一样,仅打印最后一行N

bash上的简单隔离:

查找./test_dir/ | sed'$ d'| sed'$ d'| sed'$ d'| ...

但是我需要复制sed命令N次

有更好的解决方案吗? 除了awk,python等...

使用带有负数的head 在我的示例中,它将打印所有行,但最后3行:

head -n -3 infile

如果head -n -3文件名在您的系统上不起作用(例如我的),您也可以尝试以下方法(也可以使用别名或在.bashrc中创建函数)

head -`echo "$(wc -l filename)" | awk '{ print $1 - 3; }'` filename

其中文件名和上面的3分别是您的文件和行数。

tail命令可以从Mac OS / BSD上的文件末尾跳过。 tail接受+/-前缀,这有助于下面的表达,从头开始显示3行

tail -n +3 filename.ext

或者,要从文件末尾跳过行,请改用-前缀。

tail -n -3 filenme.ext

通常, tail的默认值是-前缀,因此从文件末尾开始计数。 在这里看到另一个问题的类似答案: 打印文件,跳过Bash中的前X行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM