У меня ощущение, что вывод получен SQL-запросом. Если так - то и фильтрацию надо делать SQL-запросом, а не извращаться с grep'ом - ибо grep вынужден парсить поля заново.
Второй вариант - работать чем-то типа AWK, который разбивает строки на поля. Правда, там м.б. проблемы при пустых полях, которые он не увидит.
1) "Зарплата от 1000 и выше" = "четыре или более цифры" =
[0-9]{4,}
или точнее
[1-9][0-9]{3,}
2) Отрицание в regex пишется так:
[^K]
- любой символ, кроме "K"
[^KJ]
- любой символ, кроме "K" и "J"
[^K-P]
- любой символ, кроме диапазона {от "K" до "P"}
3) Если Вам надо работать именно с полями - то, как я уже сказал, grep работает очень плохо. Вариант
'PAUL.+BOSTON'
от
mureevms плох тем, что сработает, если эти значения появятся в поле "фамилия", а они это могут.
Хуже того: этот вариант примет и имя "CO
PAULER" (придумал из пальца, чисто для примера).
Я могу напрячься и написать более корректный regex на это дело - ну, для начала огородить эти слова пробелами. Но не буду, ибо лень.