Предполагая, что ваш вывод всегда , представленный для трех предоставленных вами примеров, следующее должно работать:
rpm -Vqf <arguments> | awk '/(\/[^/ ]+)+$/ {printf("%s|%s\n",$NF,$1);next} /is not owned/{printf("%s|not owned\n",$2)}'
Этот вызов awk
делает следующее:
/
, за которым следует любое количество «не -косых черт» (, которые также не являются пробелами ), и этот шаблон, возможно, повторяется ), используйте printf
для печати последней записи (= разделенной пробелами -строки ), которая является путем к файлу, за которым следует |
, а затем первая запись. Затем пропустите выполнение до следующей строки ввода (, иначе вы можете получить несколько выходных данных для одной и той же строки ввода ). file <name> is not owned...
), за которым следует фиксированная строка «не принадлежит». Следующая awk
программа должна работать:
awk 'FNR==NR{key[$1]=$2;next} {$2=key[$1]}1' file1.txt file2.txt
Хотя я уверен, что вопрос дублируется...