Самый простой ответ - использовать последовательность grep
вызовов:
grep 'A1' filename | grep 'A2' | grep 'A3'
Чтобы обработать независимое количество параметров, вам нужно построить строку выполнения: -
str="cat filename" while [ $# -gt 0 ]; do a="$a|grep '$1'"; shift; done eval "$a"
Хотя я обычно избегаю ненужных cat
вызовов (извините за каламбур), его использование в этом случае значительно упрощает сценарий. Я не проверял все комбинации со встроенными пробелами в параметрах, но приведенный выше скрипт, кажется, правильно обрабатывает цитирование в простых случаях.