我有一个很长的文件,我想打印,跳过前1,000,000行,例如。
我查看了猫的手册页,但我没有看到任何选项可以这样做。我正在寻找一个命令来执行此操作或一个简单的Bash程序。
我有一个很长的文件,我想打印,跳过前1,000,000行,例如。
我查看了猫的手册页,但我没有看到任何选项可以这样做。我正在寻找一个命令来执行此操作或一个简单的Bash程序。
当前回答
这个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
当然,你可以改进它,例如通过测试所有参数值都是预期的:-)
其他回答
我发现删除文件前十行最简单的方法:
$ sed 1,10d file.txt
在一般情况下,X是要删除的初始行数,这归功于评论者和编辑:
$ sed 1,Xd file.txt
如果您的系统上有GNU tail可用,您可以执行以下操作:
tail -n +1000001 huge-file.log
它是你想要的+字符。引用手册页中的内容:
如果K的第一个字符(字节数或行数)是a ' +',从每个文件开头的第k项开始打印。
因此,正如注释中所指出的那样,输入+1000001开始打印前1,000,000行之后的第一项。
使用AWK的一个不那么冗长的版本:
awk 'NR > 1e6' myfile.txt
但我建议使用整数。
这个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
当然,你可以改进它,例如通过测试所有参数值都是预期的:-)
你可以使用head和tail命令:
head -n <num> | tail -n <lines to print>
其中num是1e6 +想要打印的行数。