с grep
и sed
в одной строке:
for i in $(grep -f fileb filea | awk '{print $2}'); do sed -e 's/^C/\nC/g' filea | sed -n "/$i/,/^ *$/p" | grep -v "^$"; done
То есть:
Возьмите шаблоны для поиска с помощью:
grep -f fileb filea | awk '{print $2}'
Вставьте пустую строку перед каждой строкой, начинающейся с C:
sed -e 's/^C/\nC/g' filea
Взять из шаблона в пустая строка:
sed -n "/$i/,/^ *$/p"
Удалите пустые строки, чтобы получить желаемый результат:
grep -v "^$"
Все это внутри цикла for, чтобы иметь возможность выполнять один и тот же процесс для каждого шаблона в файле.
Используйте ниже одну команду лайнера для перечисления команды пакета:
rpm -ql systemd | grep -w 'bin\|sbin' | awk -F '/' '{print $NF}' | xargs man head | grep ' - ' | grep -vi 'No manual' 2> /dev/null