根据行号获取前一个管道输出的字符串行

根据行号获取前一个管道输出的字符串行

运行以下命令后,我得到:

[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;

相关内容