Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: sed, odstranenie znakov za "-"  (Přečteno 2260 krát)

dimmuboy

sed, odstranenie znakov za "-"
« kdy: 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/^.*: //'
Notebook Lenovo U165 - 11,6", AMD Athlon II K625, 4 GB DDR3 RAM, 500 GB HDD, ATI Radeon HD 4200
https://twitter.com/#!/dimmu_boy

Kedrigern

Re: sed, odstranenie znakov za "-"
« Odpověď #1 kdy: 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.

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re: sed, odstranenie znakov za "-"
« Odpověď #2 kdy: 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

dimmuboy

Re: sed, odstranenie znakov za "-"
« Odpověď #3 kdy: 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 ;)
« Poslední změna: 18 Září 2011, 10:19:48 od dimmuboy »
Notebook Lenovo U165 - 11,6", AMD Athlon II K625, 4 GB DDR3 RAM, 500 GB HDD, ATI Radeon HD 4200
https://twitter.com/#!/dimmu_boy

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: sed, odstranenie znakov za "-"
« Odpověď #4 kdy: 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
« Poslední změna: 18 Září 2011, 10:48:21 od GdH »

dimmuboy

Re: sed, odstranenie znakov za "-"
« Odpověď #5 kdy: 18 Září 2011, 10:54:31 »
manual mam nastudovany, mne vsak treba vytiahnut udaj o interpetovi prave zo SongTitle (vid. priklad o prispevok vyssie)
Notebook Lenovo U165 - 11,6", AMD Athlon II K625, 4 GB DDR3 RAM, 500 GB HDD, ATI Radeon HD 4200
https://twitter.com/#!/dimmu_boy

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: sed, odstranenie znakov za "-"
« Odpověď #6 kdy: 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 :)
« Poslední změna: 18 Září 2011, 11:11:50 od GdH »

Kedrigern

Re: sed, odstranenie znakov za "-"
« Odpověď #7 kdy: 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 :).


dimmuboy

Re: sed, odstranenie znakov za "-"
« Odpověď #8 kdy: 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 :)
Notebook Lenovo U165 - 11,6", AMD Athlon II K625, 4 GB DDR3 RAM, 500 GB HDD, ATI Radeon HD 4200
https://twitter.com/#!/dimmu_boy

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: sed, odstranenie znakov za "-"
« Odpověď #9 kdy: 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/ - .*//'
« Poslední změna: 23 Září 2011, 12:38:54 od GdH »

dimmuboy

Re: sed, odstranenie znakov za "-"
« Odpověď #10 kdy: 18 Září 2011, 11:59:31 »
fajn.. tak takto by to slo.. idem to zakomponovat do toho mojko skriptu ;)
Notebook Lenovo U165 - 11,6", AMD Athlon II K625, 4 GB DDR3 RAM, 500 GB HDD, ATI Radeon HD 4200
https://twitter.com/#!/dimmu_boy

 

Provoz zaštiťuje spolek OpenAlt.