我有一个包含这样数据的数组:
( "10.1.1.1 api sd1", "10.1.1.1 lst sd2" )
是否有可能从数组中提取每行第二列中的元素并将它们放入文件中?例如。在上述情况下,预期结果将是:
api
lst
答案 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