您有任何bash解决方案来从stdout中删除N行吗?
像“head”命令一样,打印所有行,只有最后N行除外
在巴什上的简单孤岛:
找到./test_dir/ sed '$d‘\n.
但我需要复制sed命令N次
有更好的解决办法吗?除了awk,python等..。
发布于 2012-08-31 09:02:18
使用带负数的head
。在我的示例中,它将打印所有行,但最后3行:
head -n -3 infile
发布于 2015-06-25 06:14:57
如果head -n -3文件名不能在您的系统上工作(就像我的文件名一样),您也可以尝试以下方法(并且可能别名它或在您的.bashrc中创建函数)
head -`echo "$(wc -l filename)" | awk '{ print $1 - 3; }'` filename
其中文件名和上面的3分别是您的文件和行数。
发布于 2018-10-11 04:42:05
tail
命令可以从Mac / BSD文件的末尾跳过。tail
接受+/-
前缀,这有助于下面的表达式,从一开始将显示3行
tail -n +3 filename.ext
或者,若要跳过文件末尾的行,请使用-
前缀。
tail -n -3 filenme.ext
通常,tail
的缺省值是-
前缀,因此从文件的末尾开始计算。在这里看到与另一个问题类似的答案:Print a file skipping first X lines in Bash
https://stackoverflow.com/questions/12212013
复制相似问题