以Bash格式复制文件,跳过前X行[重复]

问题描述 投票:529回答:13
例如,我有一个很长的文件要打印,但是跳过前1,000,000行。我查看了cat手册页,但是没有看到任何选择。我正在寻找执行此操作的命令或简单的Bash程序。
linux bash printing skip
13个回答
854
投票
您需要尾巴。一些例子:

$ 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. >


8
投票
用途:

two three four

此命令将删除第一行并打印其余行。

6
投票
您可以使用head和tail命令执行此操作:

sed -n '1d;p'

其中num为1e6 +您要打印的行数。

3
投票
head -n <num> | tail -n <lines to print>

-2
投票
我需要做同样的事情,发现了这个线程。

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

更多的行在提示上效果很好,但是事实证明,在无头模式(cronjob)下运行时,它的行为完全不同。

我终于自己写了这个:

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


113
投票
我发现删除文件的前十行的最简单方法:

$ sed 1,10d file.txt


96
投票
如果您的系统上有GNU尾部,则可以执行以下操作:

tail -n +1000001 huge-file.log

+字符可以满足您的要求。引用手册页:

如果K的第一个字符(字节或行数)是一个“ +”,从每个文件的开头以第K个项目开始打印。

因此,如注释中所述,放置+1000001开始在前1,000,000行之后的第一个项目开始打印。


29
投票
一个不太详细的AWK版本:

awk 'NR > 1e6' myfile.txt

但是我建议使用整数。

18
投票
如果要跳过前两行:

tail -n +3 <filename>

如果要跳过第一行:

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


16
投票
sed delete commanddelete一起使用。例如:

range address

或者,如果您只想打印一个已知范围,请使用带有sed 1,100d file.txt # Print file.txt omitting lines 1-100.
标志的打印命令:

-n

此解决方案应在所有Unix系统上可靠地运行,而不管是否存在GNU实用程序。

14
投票
仅提出sed -n 201,300p file.txt # Print lines 201-300 from file.txt 替代方案。 :)要跳过前一百万行,请尝试sed

示例:

|sed '1,1000000d'


14
投票
如果要查看前10行,可以按以下方式使用sed:

$ 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


10
投票
此shell脚本对我来说很好用:

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

当然,您可以改进它,例如,通过测试所有参数值是否为预期的:-)
© www.soinside.com 2019 - 2024. All rights reserved.