1

После выполнения следующей команды я получаю:

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

3 ответа3

4
find / -name .bashrc | sed -n '2{p;q}'
4

Вы можете использовать комбинацию головы и хвоста:

find / -iname .bashrc | head -n 2 | tail -n 1

это вернет последний ряд первых двух рядов (то есть второй ряд). Возможно, вам удастся заставить head выполнить работу самостоятельно, если у нее есть возможность пропустить число строк X (проверьте man head). Также не исключено, что в наборе есть еще один инструмент для выполнения работы, который представляет собой пакет coretulis, включенный в большинство вариантов Linux, поэтому стоит отсканировать руководство для этой группы инструментов (см. Http://www.gnu. org/software/coreutils/manual/html_node/index.html или ваша локальная копия) быстрое сканирование. В любом случае, стоит посмотреть, чтобы освежиться в том, какие инструменты обычно доступны.

1

Вот набор сценариев 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;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .