Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Linux 基于新行字符将命令输出行存储到数组中_Linux_Bash_Shell_Unix_Awk - Fatal编程技术网

Linux 基于新行字符将命令输出行存储到数组中

Linux 基于新行字符将命令输出行存储到数组中,linux,bash,shell,unix,awk,Linux,Bash,Shell,Unix,Awk,我有一个变量,如下所示&我执行某些操作,以逐个打印输出,如下所述 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}' 当我将结果存储到数组中时,它将空间视为数组分隔符并存储值。但我想将输出的每一行存储到每个数组索引值,如下所示 x=($(awk -F '[nN]ame |\\.' '{for (i=2; i&

我有一个变量,如下所示&我执行某些操作,以逐个打印输出,如下所述

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}'
当我将结果存储到数组中时,它将空间视为数组分隔符并存储值。但我想将输出的每一行存储到每个数组索引值,如下所示

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

is A
is B
is C
${x[0]} = is A
${x[1]} = is B
${x[2]} = is C
还有
echo${#x[@]}=6
;它应该是
=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")
i=0 读v时;做 x[i]=“$v” ((i++) 完成<
确定请尝试以下操作:
i=0
读v时;做
x[i]=“$v”
((i++)

完成<您还可以使用mapfile命令(bash版本4或更高版本):


tempX=$(awk-F'[nN]ame | \.'{for(i=2;i您还可以使用mapfile命令(bash版本4或更高版本):


tempX=$(awk-F'[nN]ame\\.'{for(i=2;i但它返回完整数据
echo${x[0]}
=
is A is B is C
echo在引号中的Wrap参数echo“${x[0]}”现在逐个返回…我只想要第一个数组中的第一行。
$echo“${x[0]}”是A是B是C[
@logan对于您需要的bash版本4或更高版本。但是它返回完整数据
echo${x[0]}
=
是A是B是C
echo的Wrap参数在引号中echo“${x[0]}”现在逐个返回…我只想在第一个数组中返回第一行..(
$echo”${x[0]})是A是B是C[
@logan,您需要bash版本4或更高版本。但是它返回完整数据
echo${x[0]}
=
是A是B是C
我期望
${x[0]}=是A${x[1]}=是B${x[2]}=是C
但它返回完整数据
echo${x[0]}
=
是A是B是C
我期望
${x[0]}=是A是C}=x[2]}=是C
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")
tempX=$(awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}' <<< "$a")
mapfile -t x <<< "$tempX"

~$ echo "${x[0]}"
is A