использование awk для сортировки данных в установленном формате

SCM Breeze также поставляется с некоторыми сочетаниями клавиш оболочки для таких команд, как ls (или ll )и rm :https://github.com/scmbreeze/scm_breeze#ls-shortcuts

.

0
20.01.2020, 14:57
1 ответ

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

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...), за которым следует фиксированная строка «не принадлежит».
0
28.04.2021, 23:25

Теги

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