如何使用awk仅获取“ name_of_package.rpm?”

时间:2019-04-28 15:45:27

标签: awk yum

我正在尝试从10,000+个可用于CentOS 7的软件包列表中仅获取“ name_of_package.rpm”。我尝试了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 个答案:

答案 0 :(得分:2)

从显示的示例输入看来,您可以轻松完成操作(再次完全基于显示的示例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