你有任何bash解决方案从stdout删除N行吗?
像'head'命令一样,打印所有行,只有最后一行
关于bash的简单解决:
找到./test_dir/ | sed'$ d'| sed'$ d'| sed'$ d'| ...
但我需要复制sed命令N次
有更好的解决方案吗? 除了awk,python等...
答案 0 :(得分:5)
使用带有负数的head
。在我的例子中,它将打印所有行但是最后3行:
head -n -3 infile
答案 1 :(得分:1)
如果head -n -3文件名在你的系统上不起作用(比如我的),你也可以尝试以下方法(也许是别名或在.bashrc中创建一个函数)
head -`echo "$(wc -l filename)" | awk '{ print $1 - 3; }'` filename
上面的 filename 和 3 分别是你的文件和行数。
答案 2 :(得分:0)
在Mac OS / BSD上,tail
可以从末尾跳过。 tail
接受数字前面的+/-
,以便您可以写tail -n +3 filename.ext
从文件开头跳过3或tail -n -3 filenme.ext
跳过从文件末尾开始计数的行通常是tail -n
的默认值。在这里看到不同问题的类似答案:Print a file skipping first X lines in Bash