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