我试图从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”而没有“[]”,日期或大小。我完全打算通过一个脚本传递这个列表,该脚本将其依赖项下载到我可以离线使用的个人实验室服务器。干杯!
从您显示的示例输入看起来就像您可以简单地做(再次完全基于您显示的示例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