Kezdőlap › Fórumok › Programozás › Reguláris kifejezések
- This topic has 38 hozzászólás, 4 résztvevő, and was last updated 17 years, 10 months telt el by
retaliator44.
-
SzerzőBejegyzés
-
2007-09-07-19:56 #2131860
Hát, igen, a lényeg jól működik. Ez azt jelenti, hogy az előző hozzászólásom „akkor” utáni része lép érvénybe 🙁
(valami csak lesz ezzel az equery-vel)2007-09-07-19:56 #2131861Hát, igen, a lényeg jól működik. Ez azt jelenti, hogy az előző hozzászólásom „akkor” utáni része lép érvénybe 🙁
(valami csak lesz ezzel az equery-vel)2007-09-08-05:34 #2131862@retaliator44:
Nem vagyok biztos, hogy jól értettem a kérdést, de próbáld ki:az „elejének” eltüntetésére:
Code:sed -r ‘s@[^]]*] @@’a „végének” eltüntetésére:
Code:sed -r ‘s@ ([^)]*)@@’2007-09-08-05:34 #2131863@retaliator44:
Nem vagyok biztos, hogy jól értettem a kérdést, de próbáld ki:az „elejének” eltüntetésére:
Code:sed -r ‘s@[^]]*] @@’a „végének” eltüntetésére:
Code:sed -r ‘s@ ([^)]*)@@’2007-09-08-19:03 #2131864Nekem mindkettő eltünteti az összes zárójelet, legalábbis equeryvel. Azonkívül a regexpek is némi magyarázatra szorulnának, főleg a ^ karakter, és a körülötte levő szögletes zárójelek. Le tudnád írni, melyik rész mit is hivatott csinálni?
Code:# equery -C list gstreamer|sed -r ‘s@[^]]*] @@’
* installed packages
media-libs/gstreamer-0.8.12
media-libs/gstreamer-0.10.12
# equery -C list gstreamer|sed -r ‘s@ ([^)]*)@@’
* installed packages
media-libs/gstreamer-0.8.12
media-libs/gstreamer-0.10.122007-09-08-19:03 #2131865Nekem mindkettő eltünteti az összes zárójelet, legalábbis equeryvel. Azonkívül a regexpek is némi magyarázatra szorulnának, főleg a ^ karakter, és a körülötte levő szögletes zárójelek. Le tudnád írni, melyik rész mit is hivatott csinálni?
Code:# equery -C list gstreamer|sed -r ‘s@[^]]*] @@’
* installed packages
media-libs/gstreamer-0.8.12
media-libs/gstreamer-0.10.12
# equery -C list gstreamer|sed -r ‘s@ ([^)]*)@@’
* installed packages
media-libs/gstreamer-0.8.12
media-libs/gstreamer-0.10.122007-09-09-04:35 #2131866Kérések:
– equery -C list gstreamer > fájlba, és csatold légyszi, hogy pontosan ugyanazzal tudjunk kísérletezni, amivel te.
– mi a sed -ed verziója? Az enyém „GNU sed Version 4.1.5” (ubi 7.04 alatt)Megjegyzések:
– Azt hiszem ezen az oldalon http://main.rtfiber.com.tw/~changyj/sed/ olvastam, hogy a különboző sed- verziók különbözőképpen videlkedhetnekTöbb speciális trükköt is itt olvastam.
– Hogy mikor, melyik zárójelet kell devalidálni -sel, ne kérdezd; leginkább próbálkozással jön ki: amelyik „állapotban” nyivákol” azért, hogy nincs párja, abban zárójelezni lehet vele, amelyik állapotban nem, ott sima karakter. Vagy… mint itt lejjebb látod…
– Volt évekkel ezelőtt egy jó kis füzetecském (nyomtatott), de valaki lenyúlta. a regexp-kről szólt, külön táblázatokkal, mert sajnos nem pontosan ugyanaz a grep-ben, az ex-ben, az awk-ban, a perl-ben, … és a shellekben.sed -r ‘s@[^]]*] @@’ – nézzük karakterenként, a szokásos dolgokkal nem foglalkozom most. A kifejezés „szavakkal”: cseréld le „semmire” a következőt: mindent, amíg nem találsz ], azután a ] -t is, és még egy szóközt.
a -r -ret a regular expression miatt használom, valahol ajánlották…
‘ használok „ helyett, hogy a shellnek még véletlenül se jusson eszébe a kifejezésben behelyettesíteni valamit
az első [ : ez itt most zárójel a szokásos szögletes zárójel értelemben, tehát nem karakter.
a ^ : a szögletes nyitózárójel után közvetlenül álló ^ a nem, tehát az ezt következő felsorolás értelme megfordul, nem valamelyik belőle, hanem egyik sem.
a ] itt most nem zárójel, hanem karakter. Be leht írni szögletes zárójeles kifejezésbe, de ekkor kötelezően az első helyen, vagy a ^ jel után az első helyen kell állnia.
a következő ] itt most a szögletes zárójeles fifejetés bezáró zárójele.
a * az „akárhányszor” ismétlésoperátor
a következő ] egyszerű karakter, az utána következő szóköz szintén.
Ezt a sorozatot cserélem le „semmi”-re, nálam így néz ki az eredmény:Code:[M~] media-libs/gstreamer-0.8.12 (0.8)
[ ~] media-libs/gstreamer-0.10.14 (0.10)A másik
sed -r ‘s@ ([^)]*)@@’ Szavakkal: cseréld le „semmi”-re a következőt: egy (, utána mindent, ami nem ) és végül a ) -t is. Részletesen
( a gömbölyű nyitózárójel, devalidálni kell,
[^)]* minden, ami nem gömbölyű záró zárójel, akárhányszor, devalidálni kell,
) a gömbölyű záró zárójel, devalidálni kell. AZ eredmény nálam:Code:[I–] [M~] media-libs/gstreamer-0.8.12
[I–] [ ~] media-libs/gstreamer-0.10.142007-09-09-04:35 #2131867Kérések:
– equery -C list gstreamer > fájlba, és csatold légyszi, hogy pontosan ugyanazzal tudjunk kísérletezni, amivel te.
– mi a sed -ed verziója? Az enyém „GNU sed Version 4.1.5” (ubi 7.04 alatt)Megjegyzések:
– Azt hiszem ezen az oldalon http://main.rtfiber.com.tw/~changyj/sed/ olvastam, hogy a különboző sed- verziók különbözőképpen videlkedhetnekTöbb speciális trükköt is itt olvastam.
– Hogy mikor, melyik zárójelet kell devalidálni -sel, ne kérdezd; leginkább próbálkozással jön ki: amelyik „állapotban” nyivákol” azért, hogy nincs párja, abban zárójelezni lehet vele, amelyik állapotban nem, ott sima karakter. Vagy… mint itt lejjebb látod…
– Volt évekkel ezelőtt egy jó kis füzetecském (nyomtatott), de valaki lenyúlta. a regexp-kről szólt, külön táblázatokkal, mert sajnos nem pontosan ugyanaz a grep-ben, az ex-ben, az awk-ban, a perl-ben, … és a shellekben.sed -r ‘s@[^]]*] @@’ – nézzük karakterenként, a szokásos dolgokkal nem foglalkozom most. A kifejezés „szavakkal”: cseréld le „semmire” a következőt: mindent, amíg nem találsz ], azután a ] -t is, és még egy szóközt.
a -r -ret a regular expression miatt használom, valahol ajánlották…
‘ használok „ helyett, hogy a shellnek még véletlenül se jusson eszébe a kifejezésben behelyettesíteni valamit
az első [ : ez itt most zárójel a szokásos szögletes zárójel értelemben, tehát nem karakter.
a ^ : a szögletes nyitózárójel után közvetlenül álló ^ a nem, tehát az ezt következő felsorolás értelme megfordul, nem valamelyik belőle, hanem egyik sem.
a ] itt most nem zárójel, hanem karakter. Be leht írni szögletes zárójeles kifejezésbe, de ekkor kötelezően az első helyen, vagy a ^ jel után az első helyen kell állnia.
a következő ] itt most a szögletes zárójeles fifejetés bezáró zárójele.
a * az „akárhányszor” ismétlésoperátor
a következő ] egyszerű karakter, az utána következő szóköz szintén.
Ezt a sorozatot cserélem le „semmi”-re, nálam így néz ki az eredmény:Code:[M~] media-libs/gstreamer-0.8.12 (0.8)
[ ~] media-libs/gstreamer-0.10.14 (0.10)A másik
sed -r ‘s@ ([^)]*)@@’ Szavakkal: cseréld le „semmi”-re a következőt: egy (, utána mindent, ami nem ) és végül a ) -t is. Részletesen
( a gömbölyű nyitózárójel, devalidálni kell,
[^)]* minden, ami nem gömbölyű záró zárójel, akárhányszor, devalidálni kell,
) a gömbölyű záró zárójel, devalidálni kell. AZ eredmény nálam:Code:[I–] [M~] media-libs/gstreamer-0.8.12
[I–] [ ~] media-libs/gstreamer-0.10.142007-09-09-11:12 #2131868Ennyi a file tartalma 🙂
* installed packages
media-libs/gstreamer-0.8.12
media-libs/gstreamer-0.10.12Pont ez a gondom… a sed magában működik, az equery kimenete hülyíti meg. Hogy miféle kimenetre mennek a zárójelek, arról fogalmam sincs… Pláne így :D:
# equery -C list gstreamer 2>/dev/null
[ Searching for package ‘gstreamer’ in all categories among: ]
* installed packages
[I–] [M~] media-libs/gstreamer-0.8.12 (0.8)
[I–] [ ~] media-libs/gstreamer-0.10.12 (0.10)
# equery -C list gstreamer 1>/dev/null
#Sed 4.1.5 szintén, Sabayon 3.4e.
A -r az extended regexp, nem tudom, pontosan mit is változtat, de jó ha ott van.
A magyarázatot pedig köszönöm, így már értem!2007-09-09-11:12 #2131869Ennyi a file tartalma 🙂
* installed packages
media-libs/gstreamer-0.8.12
media-libs/gstreamer-0.10.12Pont ez a gondom… a sed magában működik, az equery kimenete hülyíti meg. Hogy miféle kimenetre mennek a zárójelek, arról fogalmam sincs… Pláne így :D:
# equery -C list gstreamer 2>/dev/null
[ Searching for package ‘gstreamer’ in all categories among: ]
* installed packages
[I–] [M~] media-libs/gstreamer-0.8.12 (0.8)
[I–] [ ~] media-libs/gstreamer-0.10.12 (0.10)
# equery -C list gstreamer 1>/dev/null
#Sed 4.1.5 szintén, Sabayon 3.4e.
A -r az extended regexp, nem tudom, pontosan mit is változtat, de jó ha ott van.
A magyarázatot pedig köszönöm, így már értem! -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz