我有一个很长的文件,我想打印,跳过前1,000,000行,例如。

我查看了猫的手册页,但我没有看到任何选项可以这样做。我正在寻找一个命令来执行此操作或一个简单的Bash程序。


当前回答

你可以使用head和tail命令:

head -n <num> | tail -n <lines to print>

其中num是1e6 +想要打印的行数。

其他回答

如果你想跳过前两行:

tail -n +3 <filename>

如果你想跳过第一个x行:

tail -n +$((x+1)) <filename>

只是提出一个sed替代方案。要跳过前一百万行,请尝试|sed '1,1000000d'。

例子:

$ perl -wle 'print for (1..1_000_005)'|sed '1,1000000d'
1000001
1000002
1000003
1000004
1000005

我需要做同样的事情,并找到了这个线程。

我试过“tail -n +”,但它只是打印了所有内容。

更多的+行在提示符上工作得很好,但结果是在无头模式下运行时表现完全不同(cronjob)。

最后我自己写了这个:

skip=5
FILE="/tmp/filetoprint"
tail -n$((`cat "${FILE}" | wc -l` - skip)) "${FILE}"

你可以使用head和tail命令:

head -n <num> | tail -n <lines to print>

其中num是1e6 +想要打印的行数。

cat < File > | awk '{if(NR > 6) print $0}'