Como pesquisar por palavra no array

1

Eu tenho uma matriz

array=("a b" "c d")

Agora eu tenho que procurar a b e encontrar a ocorrência. Como se aproximar?

    
por Anony 12.12.2017 / 14:49

3 respostas

2

Quando você imprime seus elementos de matriz em uma nova linha você pode usar o grep:

printf '%s\n' "${array[@]}" | grep "a b"

Se os elementos da matriz contiverem \n , é melhor usar grep -z e %code% (obrigado @muru) :

printf '%s
printf '%s\n' "${array[@]}" | grep "a b"
' "${array[@]}" | grep -z "a b"
    
por RoVo 12.12.2017 / 15:04
1

Com bash:

array=("a b" "c d")

for ((i=0; i<${#array[@]}; i++)); do
  if [[ ${array[$i]} == "a b" ]]; then
    echo "Element $i matched"
  fi
done

Saída:

Element 0 matched

${#array[@]} contém o número do último elemento na matriz.

    
por Cyrus 13.12.2017 / 06:08
0

Este SO Q & A sugere uma maneira de realizar a pesquisa

Implementação para sua pergunta:

#!/bin/bash
array=("a b" "c d")
value="a b"
if [[ " ${array[@]} " =~ " ${value} " ]]; then
   echo found $value
fi

Saída:

found a b
    
por Yaron 12.12.2017 / 15:00

Tags