捕获特定的数组列并将其写入文件

时间:2014-10-15 07:33:25

标签: arrays bash perl if-statement awk

我有一个包含这样数据的数组:

( "10.1.1.1 api sd1", "10.1.1.1 lst sd2" )

是否有可能从数组中提取每行第二列中的元素并将它们放入文件中?例如。在上述情况下,预期结果将是:

api
lst

3 个答案:

答案 0 :(得分:2)

您可以迭代数组并使用read捕获每个数组条目中的第二列:

ARRAY1=( "10.1.1.1 api sd1" "10.1.1.1 lst sd2" )

for i in "${ARRAY1[@]}"; do
   read -r _ b _ <<< "$i"
   echo "$b"
done > out.log

cat out.log
api
lst

答案 1 :(得分:1)

bash的另一种方式

ARRAY=( "10.1.1.1 api sd1" "10.1.1.1 lst sd2" )

for i in "${ARRAY[@]}"; do
    set -- $i
    echo "$2"
done

这种方法更适合存在大量字段的文件,因为您可以简单地选择所需的字段而无需创建大量变量。

答案 2 :(得分:0)

尝试下面的perl脚本:

Perl代码:

use strict;
use warnings;

my @array = ("10.1.1.1 api sd1", "10.1.1.1 lst sd2");    
my @columns = ();
foreach my $result (@array)
 {
   @columns = split /\s/, $result;
   print $columns[1] . "\n";         
    }

Perl One Liner:

如果数组元素被输入到输入文件(输入)中,那么使用perl one liner我们可以如下所示

perl -lane "print $F[1]" Input