头的反义词是什么?我想要文件中除前 N 行之外的所有行
给定一个未知长度的文本文件,我如何读取文件的所有但前两行?我知道 tail
会给我最后 N 行,但我不知道 N 提前是什么。
文件
AAAA
BBBB
CCCC
DDDD
EEEE
所以对于我想要的
CCCC
DDDD
EEEE
文件
AAAA
BBBB
CCCC
对于我想要的
CCCC
Given a text file of unknown length, how can I read, for example all but the first 2 lines of the file? I know tail
will give me the last N lines, but I don't know what N is ahead of time.
So for a file
AAAA
BBBB
CCCC
DDDD
EEEE
I want
CCCC
DDDD
EEEE
And for a file
AAAA
BBBB
CCCC
I'd get just
CCCC
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
tail --help
给出以下内容:因此,要过滤掉前
2
行,-n +3
应该为您提供您正在查看的输出对于(从第3个开始):tail --help
gives the following:So to filter out the first
2
lines,-n +3
should give you the output you are looking for (start from 3rd):假设您的 tail 版本支持它,您可以指定在 X 行之后开始 tail。在你的情况下,你会做2+1。
Assuming your version of tail supports it, you can specify starting the tail after X lines. In your case, you'd do 2+1.
使用 awk 的简单解决方案:
A simple solution using awk:
尝试
sed 1,2d
。根据需要更换 2 个。Try
sed 1,2d
. Replace 2 as needed.tail -n +linecount filename
将从filename
的linecount
行开始输出,因此tail -n +3 filename
应该做你想做的事。
tail -n +linecount filename
will start output at linelinecount
offilename
, sotail -n +3 filename
should do what you want.
使用此示例,假设第一个样本名为 Sample1.dat,然后
tail --lines=3 Sample1.dat
会打印从第三行到最后一行的所有行。对于第二个示例,再次假设它名为sample2.dat,它将是
tail --lines=-1 Sample2.dat
,它将打印最后一行...Use this, supposing the first sample is called sample1.dat then
tail --lines=3 sample1.dat
which would print all lines from the 3rd line to the last line.For the second sample, again suppose it is called sample2.dat it would be
tail --lines=-1 sample2.dat
which would print the last line...head
函数支持负数。例如,正数打印前 2 行。
负数将打印除前 2 行之外的所有内容。
请注意,与
tail
不同,这不需要事先了解文件中的总行数。无论有多少行,它都会排除前 2 行。tail -n -2
的负数可以类似地用于删除文件的最后 2 行。请注意,这使用 GNU 头版本 8.22。该功能在最初发布时可能不可用。即使是相当老的 Linux 发行版现在也可以使用。
The
head
function supports this with negative numbers.For example, a positive number prints the first 2 lines.
A negative number prints all except for the first 2 lines.
Note that unlike with
tail
this does not require prior knowledge of the total number of lines in a file. It excludes the first 2 lines regardless of how many lines there are. Negative numbers fortail -n -2
can similarly be used to remove the last 2 lines of a file.Note this uses GNU head version 8.22. This feature may not have been available at the original time of release. It is now available even if fairly old linux distros.
我真的不知道如何从尾部或头部做到这一点,但在 wc -l (行数)和 bash 表达式的帮助下,你可以实现这一点。
希望这有帮助。
I really don't know how to do it from just tail or head but with the help of
wc -l
(line count) and bash expression, you can achieve that.Hope this helps.
使用 awk 获取除最后 2 行之外的所有内容
awk 获取除前 2 行之外的所有内容
或者您可以使用更多
或仅使用 bash
using awk to get all but the last 2 line
awk to get all but the first 2 lines
OR you can use more
or just bash