$ 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. >
two
three
four
此命令将删除第一行并打印其余行。
sed -n '1d;p'
其中num为1e6 +您要打印的行数。
head -n <num> | tail -n <lines to print>
我尝试了“ tail -n +,但它只打印了所有内容。
更多的行在提示上效果很好,但是事实证明,在无头模式(cronjob)下运行时,它的行为完全不同。
我终于自己写了这个:
cat < File > | awk '{if(NR > 6) print $0}'
$ sed 1,10d file.txt
tail -n +1000001 huge-file.log
是+
字符可以满足您的要求。引用手册页:如果K的第一个字符(字节或行数)是一个“ +”,从每个文件的开头以第K个项目开始打印。因此,如注释中所述,放置+1000001开始在前1,000,000行之后的第一个项目开始打印。
awk 'NR > 1e6' myfile.txt
但是我建议使用整数。
tail -n +3 <filename>
如果要跳过第一行:
tail -n +$((x+1)) <filename>
delete
command与delete
一起使用。例如:或者,如果您只想打印一个已知范围,请使用带有sed 1,100d file.txt # Print file.txt omitting lines 1-100.
标志的打印命令:
-n
此解决方案应在所有Unix系统上可靠地运行,而不管是否存在GNU实用程序。
sed -n 201,300p file.txt # Print lines 201-300 from file.txt
替代方案。 :)要跳过前一百万行,请尝试sed
。示例:
|sed '1,1000000d'
$ perl -wle 'print for (1..1_000_005)'|sed '1,1000000d'
1000001
1000002
1000003
1000004
1000005
或者,如果您希望看到20至30行,则可以使用:
sed -n '1,10 p' myFile.txt
sed -n '20,30 p' myFile.txt
与此示例文件(file.txt)一起使用:
#!/bin/bash awk -v initial_line=$1 -v end_line=$2 '{ if (NR >= initial_line && NR <= end_line) print $0 }' $3
命令(它将从文件的第二行提取到第四行:
one two three four five six
此命令的输出:
edu@debian5:~$./script.sh 2 4 file.txt
当然,您可以改进它,例如,通过测试所有参数值是否为预期的:-)