Bash:将输入的输入与 Tab 解析读入数组,然后使用 Grep 逐个使用数组元素

Bash:将输入的输入与 Tab 解析读入数组,然后使用 Grep 逐个使用数组元素

标题几乎说明了一切。现在我接受一系列单独的行,并对每行进行单独的搜索。现在我想将其归结为一行,使用制表符分隔字段,将字段放入数组中,然后将数组作为单独的元素进行处理以进行单独的搜索。完全不熟悉在 bash 中处理数组:

     #!/bin/bash
 while :
 do
   HOLD=""
   > ~/tmp 1
   while : 
   do
  read -p "Find What: " WHAT
  if [[ $WHAT = "" ]]
  then 
    break
  fi
  HOLD=$HOLD" "$WHAT
  echo $HOLD
  grep -riHn "$WHAT" --include="* chm" --include="* htm*" --include="* pb*" --include="* txt" >> ~/tmp 1
   done
   if [[ $HOLD = "" ]]
   then
  break
   fi
   sort -n ~/tmp 1 > ~/tmp 2;awk 'seen[$0]++ == 1' ~/tmp 2 |sed '/\/Trash\//d' > ~/tmp 1;cat ~/tmp 1|less

答案1

您可以使用

IFS=$'\t' read -p "Find What (TAB Separated): " -a WHAT

for QUERY in "${WHAT[@]}"
do
  echo $QUERY
done

读取输入。输入字段分隔符 (IFS) 设置为制表符,输入存储在数组 WHAT 中。${WHAT[@]} 保存数组的所有元素。使用引号是为了避免 shell 重新解析字段。

相关内容