[英]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.