Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: dimmuboy 17 Září 2011, 23:41:03

Název: sed, odstranenie znakov za "-"
Přispěvatel: dimmuboy 17 Září 2011, 23:41:03
Zdravim,
vytvaram si skriptik na vytahovanie udajov z MOC pre Conky a potreboval by som aby mi budto odseklo vsetko za znakom "-" alebo aby vypisal iba znaky medzi "SongTitle:" a "-"
Zatial to mam spravene iba aby vypisal riadok so "SongTitle:" a odstranil zbytocne medzery
Kód: [Vybrat]
mocp --info | sed '/SongTitle:/!d' | sed -e 's/^.*: //'
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: Kedrigern 18 Září 2011, 00:16:17
Kód: [Vybrat]
echo "aha - aha" | sed 's/-[\ 1-9a-zA-Z]*//g'
Což znamená, že od pomlčky dál nahraď všechno za prázdný řetězec. To "a dál" je problematické, jelikož to neumím (IMHO to jednoduše nejde). Čili tam je libovolný výskyt mezer, čísel a písmen. A substituce globální (to je možná nepraktické pro tento účel).

Nevím jak ten soubor přesně vypadá, čili víc neporadím.
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: daysleeper 18 Září 2011, 00:36:56
jestli je tam pomlcka jenom jedna, pak staci cut
Kód: [Vybrat]
$ echo "aha - aha" | cut -d- -f1
aha
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: dimmuboy 18 Září 2011, 09:34:17
samozrejme, to ma napadlo az neskor ze som tu mohol hodit nejaky priklad
Kód: [Vybrat]
State: PLAY
File: http://212.111.2.151:8000/rockmax_256.mp3
Title: Ine Kafe - Rano
Artist:
SongTitle: Ine Kafe - Rano
Album:
CurrentTime: 00:43
CurrentSec: 43
Bitrate: 256kbps
AvgBitrate: 0kbps
Rate: 44kHz
ja chcem z tohto riadku "SongTitle: Ine Kafe - Rano" vybrat interpreta, cize "Ine Kafe".  Mozno by stacil aj ten cut ako pisal daysleeper, ale neskor ma napadlo ze by bolo lepsie keby nebral do uvahy iba samotny znak "-" ale aj medzery, cize " - " ak by sa nahodov vyskytla pomlcka v nazve

//EDIT: ok uz to mam.. pouzil som regexp od Kedrigerna
Kód: [Vybrat]
mocp --info | sed '/SongTitle:/!d' | sed -e 's/^.*: //' | sed 's/ - [\ 1-9a-zA-Z]*//g' Diki chlapi ;)
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: GdH 18 Září 2011, 10:41:51
A už jsi se díval do manuálu? Mocp přeci umí dodat přímo název songu, název souboru, interpreta, atd. ;)

Kód: [Vybrat]
mocp -Q %song
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: dimmuboy 18 Září 2011, 10:54:31
manual mam nastudovany, mne vsak treba vytiahnut udaj o interpetovi prave zo SongTitle (vid. priklad o prispevok vyssie)
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: GdH 18 Září 2011, 11:05:24
Promiň, obrátil jsem to, ale to na věci snad nic nemění, nebo co mi uniká?

Kód: [Vybrat]
mocp -Q %artist
Pokud budeš trvat na procvičování sedu, napsal bych to spíš takto:

Kód: [Vybrat]
sed -n 's/^SongTitle: \(.*\) - .*/\1/p'
Edit: Už mi to došlo, máš podělané tagy :)
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: Kedrigern 18 Září 2011, 11:24:34
No a jen takový drobný detail. Není třeba spouštět více instancí sedu. Ve skriptu to můžeš použít takto:
Kód: [Vybrat]
mocp --info | sed -e '/SongTitle:/!d
s/^.*: //
s/-.*//'
To, aby každý sedovský příkaz byl na separe řádku je důležité (jde to i jinak, ale není to moc podle normy).

Navíc ten můj problém jde vyřešit tou tečkou, jak si to udělal ty :).

Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: dimmuboy 18 Září 2011, 11:29:19
no jasne diki chalani.. ja som tam mal predtym pouzity este grep ale to mi prislo blbe tak som to prepisal na sed nech to uz vsetko robi on.. a nemam "podelany tagy" :D mrkni si v tom priklade file :) to mi hra radio preto to takto chcem spravit :) aby mi conky zobrazoval covery albumov aj pri radiu :)
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: GdH 18 Září 2011, 11:40:29
Podělané jsou, jinak bys nepotřeboval sed :) Jinak tedy, když už se budem snažit o minimalistický přístup, tak takto:

Kód: [Vybrat]
mocp -Q %song | sed 's/ - .*//'
Název: Re: sed, odstranenie znakov za "-"
Přispěvatel: dimmuboy 18 Září 2011, 11:59:31
fajn.. tak takto by to slo.. idem to zakomponovat do toho mojko skriptu ;)