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

问题描述 投票:1回答:1

我试图从CentOS 7可用的10,000多个软件包列表中仅获取“name_of_package.rpm”。我尝试了awk和grep的各种迭代/组合但没有用。我尝试过使用谷歌和其他问题的一些想法,但目前似乎对我没有任何帮助。任何帮助表示赞赏!

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”而没有“[]”,日期或大小。我完全打算通过一个脚本传递这个列表,该脚本将其依赖项下载到我可以离线使用的个人实验室服务器。干杯!

awk yum
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.