Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
用awk并行提取bash数组元素_Bash_Awk - Fatal编程技术网

用awk并行提取bash数组元素

用awk并行提取bash数组元素,bash,awk,Bash,Awk,我的虚拟bash数组是: myArray=(Ann Becky Diana) 我的虚拟文件如下所示: Ann 9 Becky 7 Caroline 8 Diana 5 我想从我的虚拟文件中提取/grep所有以myArray中的项目开头的行,结果如下: Ann 9 Becky 7 Diana 5 array=(Ann Becky Diana) grep -Ff <(pri

我的虚拟bash数组是:

   myArray=(Ann Becky Diana)
我的虚拟文件如下所示:

   Ann       9  
   Becky     7
   Caroline  8
   Diana     5
我想从我的虚拟文件中提取/grep所有以
myArray
中的项目开头的行,结果如下:

   Ann       9  
   Becky     7
   Diana     5
array=(Ann Becky Diana)

grep -Ff <(printf "%s\n" "${array[@]}") f
Ann       9
Becky     7
Diana     5
myarray=(Ann Becky Diana)
awk -v ARR="{myarray[*]}" 'BEGIN{split(ARR,list," ")} {
   for (i=1;i<=length(list);i++)
       if($1 == list[i])
          print $0
}' dummy.txt
我可以使用for循环执行此操作:

  for NAME in "${myArray[@]}"; do
      awk -v NAME="$NAME" '/^NAME/' dummy.file >> output
  done
我的问题
如何将bash数组发送到awk并提取想要的信息而不使用循环?是否可以对整个阵列进行操作

我希望有可能做类似的事情:

   awk -v ARRAY="${myArray[*]}" '/^ARRAY/' dummy.file

您可以将
grep-Ff
printf
一起使用,如下所示:

   Ann       9  
   Becky     7
   Diana     5
array=(Ann Becky Diana)

grep -Ff <(printf "%s\n" "${array[@]}") f
Ann       9
Becky     7
Diana     5
myarray=(Ann Becky Diana)
awk -v ARR="{myarray[*]}" 'BEGIN{split(ARR,list," ")} {
   for (i=1;i<=length(list);i++)
       if($1 == list[i])
          print $0
}' dummy.txt
array=(安贝基戴安娜)
grep-Ff您可以这样使用:

   Ann       9  
   Becky     7
   Diana     5
array=(Ann Becky Diana)

grep -Ff <(printf "%s\n" "${array[@]}") f
Ann       9
Becky     7
Diana     5
myarray=(Ann Becky Diana)
awk -v ARR="{myarray[*]}" 'BEGIN{split(ARR,list," ")} {
   for (i=1;i<=length(list);i++)
       if($1 == list[i])
          print $0
}' dummy.txt
myarray=(安贝基戴安娜)
awk-v ARR=“{myarray[*]}”开始{split(ARR,list,”)}{

对于(i=1;看起来不错,这确实是您希望从这个
grep
得到的输出?是的,这很有效。尽管我仍然会
w
grep
grep-wFf
。是的
-w
将是这个
grep
中的方便选项