我有一个@foo数组,其中包含
这样的条目 Database alias = SAMPLE1
Database alias = SAMPLE2
Database alias = SAMPLE3
现在我只想要第3列,即
SAMPLE1
SAMPLE2
样品3
我可以使用awk (awk '{print $3}')
在shell中执行此操作,如何在perl中执行此操作?
答案 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;