如何只获得第3列?

时间:2013-02-19 09:05:17

标签: perl

我有一个@foo数组,其中包含

这样的条目
 Database alias                       = SAMPLE1
 Database alias                       = SAMPLE2
 Database alias                       = SAMPLE3

现在我只想要第3列,即

  

SAMPLE1

     

SAMPLE2

     

样品3

我可以使用awk (awk '{print $3}')在shell中执行此操作,如何在perl中执行此操作?

2 个答案:

答案 0 :(得分:2)

awk '{print $3}' < data.txt 

给出=符号,你的意思是$ 4

然而,在perl中,autosplit数组从零开始,因此它是3

perl -lane 'print $F[3]' < data.txt

答案 1 :(得分:1)

如果你想要第n列以空格分隔的字符串,这就是如何做到这一点的想法:

#!/usr/bin/env perl

use strict;
use warnings;

my @foo = ( "Col1    Col2  Col3     Col4",     # This is
            "Row2    R2C2  Row2C3   Row2C4" ); # the input array.

my $n = 2; # We want to select the 3rd column.

my @nth_columns;

for my $row (@foo) {                   # We go through the input array,
    my @columns = split /\s+/, $row;   # splitting each row by whitespaces
    push @nth_columns, $columns[$n];   # and adding the n-th column to output array
}

你当然可以用更短的方式写出来。我最喜欢的是这样的:

my @third_columns = map { (split /\s+/)[2] } @foo;