Awk split稍后在bash中使用数组

Awk split稍后在bash中使用数组,bash,awk,Bash,Awk,如果我有这个awk命令 echo $line | awk '{split($0,array,"|")}' …我以后如何在bash程序中使用数组?如果我稍后尝试从数组中打印信息,它将是空的。您不能访问awk之外的awk变量,但可以直接使用bash数组执行相同的操作 $ IFS='|' read -r -a array <<< "a|b|c"; echo ${array[1]} b $IFS=“|”read-r-a数组如果打印awk数组内容,则可以使用awk之外的数组内容:

如果我有这个awk命令

echo $line | awk '{split($0,array,"|")}'

…我以后如何在bash程序中使用数组?如果我稍后尝试从数组中打印信息,它将是空的。

您不能访问awk之外的awk变量,但可以直接使用bash数组执行相同的操作

$ IFS='|' read -r -a array <<< "a|b|c"; echo ${array[1]} 
b

$IFS=“|”read-r-a数组如果打印
awk
数组内容,则可以使用
awk
之外的数组内容:

IFS=$'\n' read -d '' -r -a line < <(echo 'o|p|s' | awk '{split($0,array,"|"); for (i in array) print array[i]}')
declare -p line
# OUTPUT: declare -a line='([0]="o" [1]="p" [2]="s")'

IFS=$'\n'read-d'-r-a行
ln="apple|lemon|orange|strawberry"    # eg

v=(${ln//|/ })     # substitute | with " " and vectorising with () 
# Now we are ready

# checking it:
for((i=0;i<${#v[@]};i++));do echo ${v[$i]}; done
apple
lemon
orange
strawberry

#or:
for i in ${v[@]}; do echo $i; done
apple
lemon
orange
strawberry
ln=“苹果|柠檬|橙|草莓”#例如
v=(${ln/})#用“”替换|,用()
#现在我们准备好了
#检查它:

对于((i=0;iyou不能),这是一个awk变量。您最好输出所需的arr值并在shell中捕获它们,即
bashVars=$(echo“$line”| awk'{n=split($0,arr,“|”);print arr[1]“arr[n]})
。例如,将打印每行的第一个和最后一个值,并分配给单个shell var
bashVar
。如果需要,您可以选择将该var声明为arr var。祝您好运。
ln="api ple|l em  on|ora  nge|s traw   berry"
echo "$ln"
api ple|l em  on|ora  nge|s traw   berry
ln=${ln// /_}                             # 1st
echo "$ln"
api_ple|l_em__on|ora__nge|s_traw___berry
v=(${ln//|/ })                            # 2nd
for i in ${v[@]}; do echo $i; done
api_ple
l_em__on
ora__nge
s_traw___berry
for((i=0;i<${#v[@]};i++));do v[$i]="${v[i]//_/ }"; done  # 3rd
for((i=0;i<${#v[@]};i++));do echo "${v[$i]}"; done
api ple
l em  on
ora  nge
s traw   berry