игнорирование следующей строки в команде grep - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу напечатать ключевое слово «word» определенным образом. Например, у меня есть 3 разных файла с именем 1 2 3

1:

word xy

word

2:

x слово y

3:

xy слово

word

x


и вывод должен быть таким:

для 1: слово x и просто слово

для 2: x слово

для 3: y слово и слово

но в моем коде первый и третий вывод => слово x и y слово AND слово y и слово x

вкратце как я могу отделить строку?

    #!/bin/bash
wordCount() {
    for i in "$1"/*; do
        if [ -d "$i" ]; then
            wordCount "./${i}" "$2"
        else
            if grep -q "$2" "$i"; then
                local format=($(grep "$2" "$i"))

                for ((x=0; x< ${#format[@]} ;x++))
                do
                  if [ "${format[$x]}" = "$2" ]
                  then
                    if [ \( "$x" -gt "0" \) ] && [ \( "$x" -lt "$((${#format[@]}-1))" \) ]
                    then
                      echo "${format[$x-1]}" "${format[$x]}" "${format[$x+1]}"
                    elif [ "$x" -eq "$((${#format[@]}-1))" ]
                    then
                      echo "${format[$(($x-1))]}" "${format[$(($x))]}"
                    else
                      echo "${format[$x]}" "${format[$(($x+1))]}"
                    fi
                  fi
                done

            fi
        fi
    done

}
...