Как мне использовать awk, чтобы получить только «name_of_package.rpm?» - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь получить только "name_of_package.rpm" из списка более 10000 пакетов, доступных для CentOS 7. Я пробовал различные итерации / комбинации awk и grep безрезультатно. Я пытался использовать Google и несколько идей из других вопросов, заданных здесь, но сейчас мне ничего не помогает. Любая помощь приветствуется!

awk -F '\w' '{print $2}' /data/rpm-list
cat /data/rpm-list | grep -o "\w*\.rpm\w*"\
cat /data/rpm-list | grep -o "*\.rpm"

Вот что я пытаюсь разобрать:

[   ]   389-ds-base-1.3.8.4-15.el7.x86_64.rpm   2018-11-12 14:21    1.7M     
[   ]   389-ds-base-devel-1.3.8.4-15.el7.x86_64.rpm 2018-11-12 14:21    271K     
[   ]   389-ds-base-libs-1.3.8.4-15.el7.x86_64.rpm  2018-11-12 14:21    698K     
[   ]   389-ds-base-snmp-1.3.8.4-15.el7.x86_64.rpm  2018-11-12 14:21    167K     

Я просто хотел "name_of_package.rpm" без "[]", дат или размеров. Я полностью собираюсь передать этот список через скрипт, который будет загружать все с его зависимостями на личный лабораторный сервер, который я могу использовать в автономном режиме. Ура!

1 Ответ

2 голосов
/ 28 апреля 2019

Из показанного вами примера ввода выглядит так, как вы могли бы просто сделать (опять же полностью на основе показанного вами примера Input_file).

awk '{print $3}'  Input_file

РЕДАКТИРОВАТЬ: Если вам более интересно узнать о номерах полей с их значениями, то вы также можете выполнить следующую команду.

awk '{for(i=1;i<=NF;i++){print "Field number is: "i " Field value is: "$i}}' Input_file
...