根据新行字符存储命令输出线到数组 [英] Storing command output lines into array based on new line character

查看:94
本文介绍了根据新行字符存储命令输出线到数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个变量如下:放大器;我执行某些操作由一个如下所述打印输出之一。

  A =我的名字是A.她的名字叫B.他的名字叫C
回声$ A| awk的-F[NN]火焰| \\\\。 {为(i = 2; I< = NF;我+ = 2)打印$ I}

输出为

 是A
为B
是C

在我的结果存储到一个数组,它认为空间阵列分离器并存储价值。但我想输出到每个数组索引值的每一行存储如下

  X =($(awk的-F[NN]火焰| \\\\''{为(i = 2; I< = NF;我+ = 2)打印$ I }'<<<$ A))

出看跌,

  $ {X [0]} =是
$ {X [1]} = A
..等等...

我期望是

  $ {X [0]} =是A
$ {X [1]} =为B
$ {X [2]} =是C

还有回声$ {#X [@]} = 6 ;它应该是 = 3


解决方案

  OK尝试以下:I = 0
而阅读伏;做
    X [i] =$ V
    ((我+ +))
完成< ≤(AWK -F[NN]火焰| \\\\''{为(i = 2; I< = NF;我+ = 2)打印$ I}'<<<$ A)

I have a variable as below & i perform certain operations to print the output one by one as mentioned below.

a="My name is A. Her Name is B. His Name is C"
echo "$a" | awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}'

The output is

is A
is B
is C

When I store the results into an array, it considers space as array separator and stores value. but i want to store the each line of the output to each array index values as below

x=($(awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}' <<< "$a"))

out puts ,

${x[0]} = is
${x[1]} = A
..and so on...

What i expect is

${x[0]} = is A
${x[1]} = is B
${x[2]} = is C

Also echo ${#x[@]} = 6 ; It should be = 3

解决方案

OK try below:

i=0
while read v; do
    x[i]="$v"
    (( i++ ))
done < <(awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}' <<< "$a")

这篇关于根据新行字符存储命令输出线到数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆