根据新行字符存储命令输出线到数组 [英] Storing command output lines into array based on new line character
本文介绍了根据新行字符存储命令输出线到数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个变量如下:放大器;我执行某些操作由一个如下所述打印输出之一。
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屋!
查看全文