Awk split稍后在bash中使用数组
如果我有这个awk命令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之外的数组内容:
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 varbashVar
。如果需要,您可以选择将该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