как поместить слово в определенную строку и столбец stdin? - PullRequest
0 голосов
/ 07 декабря 2010

желательно сделать это perl, awk и т. Д. Oneliner

например у меня есть печать

------------------------------------------------------------------------
r1320 | vkrylov | 2010-12-07 06:47:30 -0800 (Tue, 07 Dec 2010) | 1 line

rollback to 1306
------------------------------------------------------------------------

мне нужно получить слово в строке: кол 2: 3, то есть вкрылов

Ответы [ 3 ]

3 голосов
/ 07 декабря 2010

Perl:

 perl -ane 'print $F[2] if $.==2'

Столбцы ($F[]) начинаются с 0, строки ($.) начинаются с 1.

0 голосов
/ 07 декабря 2010

Я распознаю это как вывод журнала Subversion.Если вы хотите просто захватить идентификатор пользователя, вы можете сделать одно из следующих действий:

m/.{9}([^|]*?[^|\s]*)\s+/.

Однако я обычно меняю ограничитель записи на ( '-' x 72 ) . "\n", например так:

use strict;
use warnings;
use English qw<$RS>;

local $RS = ( '-' x 72 ) . "\n";
while ( <> ) { 
    my $a = $_;
    chomp;
    next unless m/\S/;
    my ( $revision, $user, $time, undef, $comment )
        = split( /\s*\|\s*|\n\n/m, $_, 5 )
        ;
    # Some people leave trailing lines in comments, so I modify the comment.
    $comment =~ s/\n+\z/\n/m; 
    ...;
}
0 голосов
/ 07 декабря 2010

ИМХО, лучшее решение - использовать проклятия.

Из Часто задаваемые вопросы по Perl 5

Как использовать проклятия с Perl?
Модуль Curses из CPAN предоставляетзагружаемый объектный интерфейс интерфейса с библиотекой curses.Небольшую демонстрацию можно найти в каталоге http://www.cpan.org/authors/Tom_Christiansen/scripts/rep.gz;эта программа повторяет команду и обновляет экран по мере необходимости, отображая rep ps axu подобно top.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...