プロが教えるわが家の防犯対策術!

rpm -qaで得られるパッケージ名のバージョン名を省いて出力したいのですが、うまい方法はありますでしょうか?

具体的には、
httpd-tools-2.2.11-2.fc10.i386
evince-dvi-2.24.2-1.fc10.i386

httpd-tools
evince-dvi
というように『-(ハイフン)』以降に数字が続く場合は、その部分を削除して表示したいと思います。

個人的には
$rpm -qa > test1
$sed -e "s/-[0-9]*//g" < test1 > test2
として、test2に希望した出力を得ようとしたのですがうまくいきませんでした。

どなたかうまいファイル操作方法をご存じの方がいらっしゃいましたら、教えていただけませんでしょうか?

よろしくお願いいたします。

A 回答 (2件)

$ rpm -qa --qf '%{name}\n'



詳細は man rpm で
    • good
    • 0
この回答へのお礼

astronaut様
早速の回答に感謝いたします。

sedでやるしかないのか!!と脳みそが凝り固まってしまっておりました。
man rpmで確認したところ、そっくりそのまま載っていました汗
ありがとうございます。

お礼日時:2009/08/20 20:43

#1 さんの回答が正解で、これ以上書く必要は無いのですが


sed の使いかた、特に * の使いかたに誤解があるようなので
あえて、sed で やってみる
例えば、下記。他の考え方も有るが。
参照 http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
$ rpm -qa | sed -e 's/-[0-9]\+[^-]*//g'

これの欠点
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
java-1.4.2-gcj-compat-javadoc-1.4.2.0-40jpp.115
などが
java-gcj-compat
java-gcj-compat-devel
java-gcj-compat-javadoc
になってしまう。
#1 さんの方法では
java-1.4.2-gcj-compat
java-1.4.2-gcj-compat-devel
java-1.4.2-gcj-compat-javadoc
こちらの方が良いと思う。
    • good
    • 0
この回答へのお礼

cynthia4様
早速の回答に感謝いたします。

>これの欠点
そうなんです!その後自分でいろいろやった結果、
$ sed -e s/-[0-9].*//g
で「うまくいった!」と思ったのですが、ご指摘のパッケージについて正しくパッケージ名が取り出せておりませんでした。
有益なご指摘と情報ありがとうございました◎

お礼日時:2009/08/20 20:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!