sed巧妙获取软件包名字


package.txt文件中是一软件包的信息,我现在只想获取软件包的名字(即除去版本号和第一个数字前面的横杠-)

[root@localhost zhaoyj]# cat package.txt
python-0.3.1-1.1
gnome-bluetooth-2.30.0-2.4
libsmack-1.0
prel-1.1
package-groups-0.94-1.1
gnome-settings-daemon-2.30.2-2.3


这是sed的一惯用法:将行进行分段,第一段是软件包名字【绿色】,第二段是版本信息【紫色】

红色 部分\1表示用第一段替换掉第一段和第二段即只保留第一段

黄色部分g表示全局替换【global】

由于小括号在shell里面有特殊含义,如果只是表示括号的话需要用反斜杠进行注释,或者使用-r选项,可以让sed支持extend  regular expresssion

[root@localhost zhaoyj]# sed -e 's/\(.*[a-Z]\)\(-[0-9].*[0-9]\)/\1/g' package.txt

python
gnome-bluetooth
libsmack
prel
package-groups
gnome-settings-daemon


现在体会到高级shell的强大了吧,不过需要承认的是也有不适合用shell的时候,使用perl可能会更简单


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值