有什么方法可以做到这一点吗?我一直在使用head -n | tail -1
,它可以做到这一点,但我一直在想是否有一个Bash工具可以专门从一个文件中提取一行(或一系列)。
我所说的 "典型 "是指一个主要功能是做这个的程序。
head'和
tail'的管道对于一个巨大的文件来说会很慢。我建议sed
像这样。
sed 'NUMq;d' file
其中NUM
是你想打印的行数;因此,例如,sed '10q;d'file
打印file
的第10行。
解释一下。
NUMq
在行号为NUM
时将立即退出。
d
将删除该行而不是打印它;这在最后一行被抑制,因为q
在退出时导致脚本的其余部分被跳过。
如果你把NUM
放在一个变量中,你要使用双引号而不是单引号。
sed "${NUM}q;d" file
sed -n '2p' < file.txt
将打印第二行
sed -n '2011p' < file.txt
2011年第1行
sed -n '10,33p' < file.txt
第10行至第33行
sed -n '1p;3p' < file.txt
第1行和第3行
以此类推...
对于用sed添加行,你可以查看这个。
你也可以用Perl来做这个。
perl -wnl -e '$.== NUM && print && exit;' some.file