如何在stdin的某一行和col中放置单词?

时间:2010-12-07 16:34:36

标签: perl

最好通过perl,awk等oneliner

来做到这一点

例如我有印刷品

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

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

我需要排队:col 2:3,即vkrylov

3 个答案:

答案 0 :(得分:3)

的Perl:

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

列($F[])从0开始,行($.)从1开始。

答案 1 :(得分:0)

我认为这是Subversion日志输出。如果您只想捕获用户ID,可以执行以下任一操作:

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; 
    ...;
}

答案 2 :(得分:-1)

恕我直言,最好的解决方案是使用诅咒。

来自Perl 5 FAQs

  

如何在Perl中使用curses?
  CPAN的Curses模块提供了一个   动态可加载的对象模块   curses库的接口。一个小的   demo可以在目录中找到   http://www.cpan.org/authors/Tom_Christiansen/scripts/rep.gz   ;这个程序重复一个命令和   根据需要更新屏幕,   渲染rep ps axu类似于top。