while read -r pattern; do printf '%s ' "$pattern" grep -x -m 1 "$pattern" b.txt || printf '%s\n' 'None' done <a.txt
Он работает, читая шаблоны один за другим, выполняя grep
для каждого из них и печатая ( printf
) дополнительную информацию, где это необходимо.
Примечание: grep -m 1
останавливается после первого найденного совпадения, хотя это не POSIX. Если у вас нет этой опции, замените строку, содержащую grep
эту:
{ grep -x "$pattern" b.txt || printf '%s\n' 'None'; } | head -n 1