我有一个很长的文件,我想打印,跳过前1,000,000行,例如。
我查看了猫的手册页,但我没有看到任何选项可以这样做。我正在寻找一个命令来执行此操作或一个简单的Bash程序。
我有一个很长的文件,我想打印,跳过前1,000,000行,例如。
我查看了猫的手册页,但我没有看到任何选项可以这样做。我正在寻找一个命令来执行此操作或一个简单的Bash程序。
当前回答
如果你想跳过前两行:
tail -n +3 <filename>
如果你想跳过第一个x行:
tail -n +$((x+1)) <filename>
其他回答
我需要做同样的事情,并找到了这个线程。
我试过“tail -n +”,但它只是打印了所有内容。
更多的+行在提示符上工作得很好,但结果是在无头模式下运行时表现完全不同(cronjob)。
最后我自己写了这个:
skip=5
FILE="/tmp/filetoprint"
tail -n$((`cat "${FILE}" | wc -l` - skip)) "${FILE}"
这个shell脚本对我来说很好:
#!/bin/bash
awk -v initial_line=$1 -v end_line=$2 '{
if (NR >= initial_line && NR <= end_line)
print $0
}' $3
与这个示例文件(file.txt)一起使用:
one
two
three
four
five
six
命令(它将从文件的第二行到第四行提取):
edu@debian5:~$./script.sh 2 4 file.txt
命令输出:
two
three
four
当然,你可以改进它,例如通过测试所有参数值都是预期的:-)
你需要尾巴。一些例子:
$ tail great-big-file.log
< Last 10 lines of great-big-file.log >
如果你真的需要跳过特定数量的“第一行”,请使用
$ tail -n +<N+1> <filename>
< filename, excluding first N lines. >
也就是说,如果你想跳过N行,你开始打印第N+1行。例子:
$ tail -n +11 /tmp/myfile
< /tmp/myfile, starting at line 11, or skipping the first 10 lines. >
如果你只想看到最后几行,可以省略“+”:
$ tail -n <N> <filename>
< last N lines of file. >
cat < File > | awk '{if(NR > 6) print $0}'
我发现删除文件前十行最简单的方法:
$ sed 1,10d file.txt
在一般情况下,X是要删除的初始行数,这归功于评论者和编辑:
$ sed 1,Xd file.txt