Я не знаю, насколько это эффективно, и я думаю, что это некрасиво, также для этого может быть какая-то полезность, но:
#!/bin/bash
unset keywords matchlist
keywords=("$@")
for kw in "${keywords[@]}"; do
matchlist="$matchlist /$kw/ &&"
done
matchlist="${matchlist% &&}"
# awk "$matchlist { print; }" < <(tr '[:upper:]' '[:lower:]' <file)
awk "$matchlist { print; }" file
И да, требуется некоторая надежность в отношении специальных символови прочее.Это просто чтобы показать идею.