Portál AbcLinuxu, 25. dubna 2024 12:41


Dotaz: bash a substring

3.6.2007 13:32 igor
bash a substring
Přečteno: 655×
Odpovědět | Admin
ahoj, pomoci rpm -qa jsem si vyselektoval seznam vsech nainstalovanych rpm baliku. Vypis vypada takto: .... openldap-devel-2.3.27-5 samba-client-3.0.23c-2 quota-3.13-1.2.3.2.el5 libuser-devel-0.54.7-2.el5.1 pam_ccreds-3-5 frysk-0.0.1.2006.12.22.rh1-4.el5

....

Jak v mam bashu upravit vypis tak ,ze obdrzim jmena rpm balicku bez ciselneho oznaceni? Dik I .... openldap-devel samba-client quota libuser-devel pam_ccreds frysk ...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.6.2007 13:36 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash a substring
Odpovědět | | Sbalit | Link | Blokovat | Admin
rpm -qa --queryformat '%{NAME}\n'
3.6.2007 13:36 outsider
Rozbalit Rozbalit vše Re: bash a substring
Odpovědět | | Sbalit | Link | Blokovat | Admin
HINT: rpm --querytags

rpm -qa --qf '%{NAME}\n'
3.6.2007 17:36 igor
Rozbalit Rozbalit vše Re: bash a substring
Dik za radu... ,ale muj problem to neresi. Seznamy mam v txt souborech a rpm jiz nespustim (servery jiz jsou reinstalovane). igor
3.6.2007 17:54 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash a substring

Pokud netrváte na bashi, můžete zkusit

  sed -e 's/-[^-]*-[^-]*$//'

Pokud ano, tak

  while read s; do echo "${s%-*-*}"; done

Ale jak moc to bude univerzální, to si netroufám odhadnout.

3.6.2007 18:00 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: bash a substring
Např. na Mandrivě jsou výsledky "rpm -qa --queryformat..." a toho sedu stejné.
3.6.2007 18:10 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash a substring
Což o to, to u mne také. Ale abych mohl prohlásit, že takhle to opravdu funguje, musel bych mít jistotu, že nějaká specifikace garantuje, že výstup má vždy tvar pkgname-version-release, kde version ani release nemohou za žádných okolností obsahovat pomlčku. A takovou jistotu nemám.
3.6.2007 18:21 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: bash a substring
LOL, tohle jsem opravdu potřeboval vysvětlit.
3.6.2007 18:37 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash a substring
Očividně ano. Jinak byste totiž chápal, že váš předchozí příspěvek byl zbytečný. Kdyby ty výstupy u mne nebyly stejné, vůbec bych sem to řešení nedával.
3.6.2007 19:43 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: bash a substring :-(
Očividné je akorát to, že všechny myšlenky mi číst neumíte :-P Co je na tom, že ten komentář opravdu přísně vzato zbytečný je? Nebo snad něčemu ubližuje? Prostě jsem to zkusil a opravdu to fungovalo, tak jsem vás chtěl potěšit, že ani v Mandrivě jsem nenalezl protipříklad (všimněte si v Mandrivě, ne v OpenSUSE, samozřejmě jsem předpokládal, že jste to vyzkoušel).
3.6.2007 17:58 outsider
Rozbalit Rozbalit vše Re: bash a substring
$ rpm -qa|perl -pe 's/(.*)(-.*?)(-.*?)$/$1/'|sort > x2.txt
$ rpm -qa --qf '%{NAME}\n'|sort > x1.txt
$ diff x1.txt x2.txt
$ cmp x1.txt x2.txt
$ echo $?
0
Distribuce je Mandriva 2007.1... Ze to funguje spravne vzdy a vsude nezarucuju...
3.6.2007 20:44 Ash | skóre: 53
Rozbalit Rozbalit vše Re: bash a substring
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když je v dotazu řeč o bashi, tak
while read; do
  echo ${REPLY%-*-*}
done < seznam.txt
za předpokladu že balíky vždy končí -něco-něco a toto chcete odříznout.

Pokud je to složitější tak sed který umí regexp, čímž se dá zvládnout víc.
3.6.2007 20:46 Ash | skóre: 53
Rozbalit Rozbalit vše Re: bash a substring
Aha, už to tu je.. tak nic :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.