Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 捕获特定数组列并将其写入文件_Arrays_Bash_Perl_If Statement_Awk - Fatal编程技术网

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

Arrays 捕获特定数组列并将其写入文件,arrays,bash,perl,if-statement,awk,Arrays,Bash,Perl,If Statement,Awk,我有一个包含如下数据的数组: ( "10.1.1.1 api sd1", "10.1.1.1 lst sd2" ) 是否有可能从数组中提取每行第二列中的元素并将其放入文件中?例如,在上述情况下,预期结果为: api lst 您可以迭代数组并使用read捕获每个数组条目中的第二列: ARRAY1=( "10.1.1.1 api sd1" "10.1.1.1 lst sd2" ) for i in "${ARRAY1[@]}"; do read -r _ b _ <<<

我有一个包含如下数据的数组:

( "10.1.1.1 api sd1", "10.1.1.1 lst sd2" )
是否有可能从数组中提取每行第二列中的元素并将其放入文件中?例如,在上述情况下,预期结果为:

api
lst

您可以迭代数组并使用
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
ARRAY1=(“10.1.1.1 api sd1”“10.1.1 lst sd2”)
对于“${ARRAY1[@]}”中的i;做
在bash中以另一种方式读取-r\b

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

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

此方法更适合于包含大量字段的文件,因为您可以简单地选择所需字段,而无需创建大量变量。

请尝试下面的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一行程序:

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";         
    }
如果将数组元素放入输入文件(input),那么使用perl one liner我们可以执行以下操作

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

我尝试了类似的方法,但没有:read-r\b\uyes基本上是下划线,用于忽略第一个值和第二列之后的所有值。如果您也需要这些值,请使用:
read-rab rest Yes
awk'{print$2}“是的,正如我写的
awk
也可以用来代替
read
,如果取出
read
使其更可读:)