运行以下命令后,我得到:
[root@yukiko /]# find / -iname .bashrc
/home/clamav/.bashrc
/home/vpopmail/.bashrc
/etc/skel/.bashrc
/root/.bashrc
但是我想要一个通过提供行号来打印特定行的命令,例如:
[root@yukiko /]# find / -iname .bashrc | getline(2)
/home/vpopmail/.bashrc
CentOS上有这样的命令吗?
答案1
您可以使用头部和尾部的组合:
find / -iname .bashrc | head -n 2 | tail -n 1
这将返回前两行的最后一行(即第二行)。head
如果它有跳过 X 行的选项(检查),您可能能够单独完成这项工作man head
。该套件中还有另一个工具可以完成这项工作,即大多数 Linux 变体包含的 coretulis 软件包,因此值得扫描这组工具的手册(请参阅http://www.gnu.org/software/coreutils/manual/html_node/index.html或本地副本)快速扫描。无论如何,如果只是为了重新了解一下通常可用的工具,还是值得一看的。
答案2
查找 / -name .bashrc | sed -n '2{p;q}'
答案3
下面是一个可以完成此操作的 Perl 脚本
#!/usr/bin/perl
use strict;
use warnings;
my $ln = $ARGV[0];
#note that further evolution may have a regular file here...
my $line = 1;
my $wantedline;
while(<STDIN>)
{
$wantedline = $_;
last if($line++ == $ln);
}
print $wantedline;