Сравните два столбца с разными значениями двух файлов и распечатайте совпадение, не игнорируя дубликаты

Предполагая, что ваш вывод всегда , представленный для трех предоставленных вами примеров, следующее должно работать:

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...), за которым следует фиксированная строка «не принадлежит».
-3
26.11.2020, 19:26
1 ответ

Следующая awkпрограмма должна работать:

awk 'FNR==NR{key[$1]=$2;next} {$2=key[$1]}1' file1.txt file2.txt

Хотя я уверен, что вопрос дублируется...

1
18.03.2021, 22:46

Теги

Похожие вопросы