Bash example code using grep: Hledání bloku php kódu s dotazem SQL

Toto je velice základní a primitivní kód, který najde řádky, kde se nachází hledané slovo a vrátí číslo. Problém tohoto kódu je, že grep je volaný ve smyčce, což nemusí být dostatečně efektivní. Proto si v příštím článku ukážeme jak to udělat pomocí funkce a awk kódu.

 

#!/bin/bash
declare -A results

clear
sql_array="
    'SELECT'    => 'f.*',
    'FROM'      => array(
        FORUMS_TABLE        => 'f'
    ),
    'LEFT_JOIN' => array(),
    'ORDER_BY'  => 'f.left_id',
    'WHERE'     => 'f.id = 1'
"

# Pole se slovy, která hledáme
words=("SELECT" "FROM" "LEFT_JOIN" "ON" "WHERE")

# Inicializace pole výsledků
results=()   # globální proměnná results je nastavena na pole

# Procházení slov a hledání jejich výskytu v stringu
for word in "${words[@]}"; do

    # Příkaz cut rozdělí daný řádek podle oddělovače -d ":", protože grep extrahuje čísla řádků následované dvojtečkou. Argument -f extrahuje první sloupec, tedy číslo řádku.
    result=$(
echo "$sql_array" | grep -n -o "'$word'" | cut -d ":" -f 1)
    if [ -z "$result" ]; then
        result=0
    fi
    results["$word"]="$result"
    read -p "WORD:$word RESULT:$result"
done

# Vypsání výsledků
for word in "${words[@]}"; do
    echo "$word: ${results[$word]}"
done

 

 

Komentáře

Oblíbené příspěvky