Kezdőlap › Fórumok › Programozás › sed segítség
- This topic has 22 hozzászólás, 8 résztvevő, and was last updated 15 years, 10 months telt el by
kisbetu.
-
SzerzőBejegyzés
-
2009-09-13-20:54 #2175126
Sajna gőzöm nincs a sedhez egyelőre, s a megadott oldal is angolul van és nincs benne példa!
Csak minták vannak meg magyarázatok.De íme egy példa amire gondolok:
$ sensors | grep CPU
CPU Temp: +37°C (low = -1°C, high = +127°C) sensor = thermistorNos amire szükségem van az csak a +37°C megjelenítése.
Én eddig jutotttam.
sensors | grep CPU | sed ‘s/ (.* //’Aztán hogy hogyan azt ne kérdezzétek, de ahogyan én értelmezem az valahogy így néz ki:
A ‘s/ jelenti a törlést
A ( jelenti hogy a ( is már törlésre kerül. Bár ez sem egyértelmű, mivel…(lejjebb majd írom.)A . pont hogy a szóközöket is (?) a ( után
A * hogy minden egyéb karaktert is.
A // végén mindig ez van. (?)
Ha a zárójelet bezárom…
$ sensors | grep CPU | sed ‘s/ (.*) //’
CPU Temp: +37°C sensor = thermistor
Akkor csak a zárójelek közti dolgok tűnnek el a zárójellel együtt.De az is lehet hogy zöldségeket beszélek. Sőt.
Nos. valami ilyesmi magyarázattal megtűzdelt sed parancsot tudna-e nekem kreálni erre a +37 fokra?
Itt írom ahogy fentebb említettem:
$ sensors | grep CPU | sed ‘s/ +.* //’ ekkor az eredmény:
CPU Temp:De viszont ha a + helyett :-ot írok hogy letöröljem a CPU Temp:-ját, akkor meg mintha nem csinálna semmit.
$ sensors | grep CPU | sed ‘s/ :.* //’
CPU Temp: +37°C (low = -1°C, high = +127°C) sensor = thermistor
De az sem vezetett eredményre hogy a törlést szabályozzam.
$ sensors | grep CPU | sed ‘s/ (.*) //’
Itt ugye a ) végéig töröl a zárójellel együtt.
Töröljön csak a h karakterig, mely ugye benne van a high szóban amely szó a ()-en belül van.
$ sensors | grep CPU | sed ‘s/ (.*h //’
Persze meg ahogy én azt elképzelem, de hiába tettem a h karaktert idézőjelek közé, meg / jelek közé, semmi hatása nem volt.Egy szó mint száz nem értem, és ha valaki nem lesz olyan kedves hogy elmagyarázza, akkor nem is fogom.
Csak azt nem mondjátok hogy egyéni szoc. probléma.
Azt nem mondhatjátok hogy nem próbálkoztam. A man shell nekem sajnos nem sok mindent mond.2009-09-13-20:54 #2175127Sajna gőzöm nincs a sedhez egyelőre, s a megadott oldal is angolul van és nincs benne példa!
Csak minták vannak meg magyarázatok.De íme egy példa amire gondolok:
$ sensors | grep CPU
CPU Temp: +37°C (low = -1°C, high = +127°C) sensor = thermistorNos amire szükségem van az csak a +37°C megjelenítése.
Én eddig jutotttam.
sensors | grep CPU | sed ‘s/ (.* //’Aztán hogy hogyan azt ne kérdezzétek, de ahogyan én értelmezem az valahogy így néz ki:
A ‘s/ jelenti a törlést
A ( jelenti hogy a ( is már törlésre kerül. Bár ez sem egyértelmű, mivel…(lejjebb majd írom.)A . pont hogy a szóközöket is (?) a ( után
A * hogy minden egyéb karaktert is.
A // végén mindig ez van. (?)
Ha a zárójelet bezárom…
$ sensors | grep CPU | sed ‘s/ (.*) //’
CPU Temp: +37°C sensor = thermistor
Akkor csak a zárójelek közti dolgok tűnnek el a zárójellel együtt.De az is lehet hogy zöldségeket beszélek. Sőt.
Nos. valami ilyesmi magyarázattal megtűzdelt sed parancsot tudna-e nekem kreálni erre a +37 fokra?
Itt írom ahogy fentebb említettem:
$ sensors | grep CPU | sed ‘s/ +.* //’ ekkor az eredmény:
CPU Temp:De viszont ha a + helyett :-ot írok hogy letöröljem a CPU Temp:-ját, akkor meg mintha nem csinálna semmit.
$ sensors | grep CPU | sed ‘s/ :.* //’
CPU Temp: +37°C (low = -1°C, high = +127°C) sensor = thermistor
De az sem vezetett eredményre hogy a törlést szabályozzam.
$ sensors | grep CPU | sed ‘s/ (.*) //’
Itt ugye a ) végéig töröl a zárójellel együtt.
Töröljön csak a h karakterig, mely ugye benne van a high szóban amely szó a ()-en belül van.
$ sensors | grep CPU | sed ‘s/ (.*h //’
Persze meg ahogy én azt elképzelem, de hiába tettem a h karaktert idézőjelek közé, meg / jelek közé, semmi hatása nem volt.Egy szó mint száz nem értem, és ha valaki nem lesz olyan kedves hogy elmagyarázza, akkor nem is fogom.
Csak azt nem mondjátok hogy egyéni szoc. probléma.
Azt nem mondhatjátok hogy nem próbálkoztam. A man shell nekem sajnos nem sok mindent mond.2009-09-13-21:01 #2175128sensors | grep CPU | cut -c „14-19”
(persze ez nem sed… abban majd uzsolt)2009-09-13-21:01 #2175129sensors | grep CPU | cut -c „14-19”
(persze ez nem sed… abban majd uzsolt)2009-09-13-22:12 #2175130ha sed kell:
sed -e ‘s|CPU Temp:||’ -e ‘s|(.*||’2009-09-13-22:12 #2175131ha sed kell:
sed -e ‘s|CPU Temp:||’ -e ‘s|(.*||’2009-09-14-08:52 #2175132Én inkább awk-val esnék neki:
Code:awk ‘{print $3}’Sed:
Code:sed „s@CPU Temp: *([^ ])*.*@1@”Legalábbis első pillantásra.
2009-09-14-08:52 #2175133Én inkább awk-val esnék neki:
Code:awk ‘{print $3}’Sed:
Code:sed „s@CPU Temp: *([^ ])*.*@1@”Legalábbis első pillantásra.
2009-09-14-10:18 #2175134Köszi a kimerítő válaszokat. Így már rögtön tudom hogy mi miként működik, de az awk tényleg jóval barátságosabbanak tűnik.
S azt már talán értem is hogy miként adta ki az eredményt.
Ahogy értelmezem, az awk számára minden mezőkből áll. Az első mezőre a $1-gyel hivatkozik, ekkor ugye azt írja majd ki hogy CPU
A 2. mező a Temp:
A 3. lesz ami nekem kell. És így tovább.2009-09-14-10:18 #2175135Köszi a kimerítő válaszokat. Így már rögtön tudom hogy mi miként működik, de az awk tényleg jóval barátságosabbanak tűnik.
S azt már talán értem is hogy miként adta ki az eredményt.
Ahogy értelmezem, az awk számára minden mezőkből áll. Az első mezőre a $1-gyel hivatkozik, ekkor ugye azt írja majd ki hogy CPU
A 2. mező a Temp:
A 3. lesz ami nekem kell. És így tovább. -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz