Forum » Programiranje » grep - čisto malo pomoči ;)
grep - čisto malo pomoči ;)
c0dehunter ::
Zdravo, v Linuxu izpisujem skupine, pa bi rabil pomoč pri sicer čisto enostavnem regularnem izrazu. Rad bi, da mi grep izpiše le tiste vrstice, ki vsebujejo eno določeno besedo, vendar za njo NE SME biti dvopičja. Torej če je v datoteki
in iščem za besedo "group", mi naj vrne samo drugo vrstico, saj za "group" ni dvopičja.
Poskusil sem takole:
cat /etc/group | grep "group[^:]"
vendar ne dela, sumim da tisto kar je bold ni prav.
Če kdo ve kaj več, se priporočam.
*p.s.: primer sem poenostavil, v resnici ne iščem za string group
group:x:4:janez admins:x:5:group
in iščem za besedo "group", mi naj vrne samo drugo vrstico, saj za "group" ni dvopičja.
Poskusil sem takole:
cat /etc/group | grep "group[^:]"
vendar ne dela, sumim da tisto kar je bold ni prav.
Če kdo ve kaj več, se priporočam.
*p.s.: primer sem poenostavil, v resnici ne iščem za string group
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
overlord_tm ::
Za takle primer dela tocno taka koda kot si jo napisal zgoraj. Probaj egrep, ampak nebi smel biti problem.
Sicer pa imam filing da bi rad iskal po 4. stolcu datoteke, torej po grupah uporabnikov. Lahko probas awk ;)
Sicer pa imam filing da bi rad iskal po 4. stolcu datoteke, torej po grupah uporabnikov. Lahko probas awk ;)
Zgodovina sprememb…
- spremenilo: overlord_tm ()
c0dehunter ::
No, tole ne dela.. Poskusi npr.
cat /etc/group | grep "vnesi_svoj_username[^:]"
Pa boš videl da ne dobiš nobene vrstice vrnjene...
recimo ene par vnosov v moji /etc/group:
Z zgornjim ukazom
cat /etc/group | grep "c0dehunter[^:]"
naj bi dobil prvi dve vrstici, vendar ukaz ne vrne ničesar...
cat /etc/group | grep "vnesi_svoj_username[^:]"
Pa boš videl da ne dobiš nobene vrstice vrnjene...
recimo ene par vnosov v moji /etc/group:
admin:x:119:c0dehunter sambashare:x:133:c0dehunter c0dehunter:x:1000:
Z zgornjim ukazom
cat /etc/group | grep "c0dehunter[^:]"
naj bi dobil prvi dve vrstici, vendar ukaz ne vrne ničesar...
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
srus ::
Morda kaj takega
grep $1 $2 | grep -v $1:
s tem da je prvi parameter string ki ga iščeš, drugi parameter pa tisto po čemer iščeš.
grep $1 $2 | grep -v $1:
s tem da je prvi parameter string ki ga iščeš, drugi parameter pa tisto po čemer iščeš.
c0dehunter ::
Morda kaj takega
grep $1 $2 | grep -v $1:
s tem da je prvi parameter string ki ga iščeš, drugi parameter pa tisto po čemer iščeš.
Evo, s tem dela* vendar se mi zdi nekako dolgo vse skupaj, sem mislil da se da z regularnimi izrazi.
* dela, če vnesem takole:
cat /etc/group | grep "c0dehunter" | grep -v "c0dehunter:"
kjer z zadnjim ukazom vse vrstice, ki vsebujejo po mojem usernamu še dvopičje..
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Zgodovina sprememb…
- spremenilo: c0dehunter ()
brodul ::
grep -r ^group /etc/group
vrne prvo vrstico
vrstica se mora začeti z group
grep -r .games /etc/group
vrne drugo
v vrstici mora imeti group vsaj en znak pred sabo
Pa ne cat | v grep.
-r regex
Pretending to be a mature adult is so exhausting.
Zgodovina sprememb…
- spremenilo: brodul ()
c0dehunter ::
Brodul, to je to, to sm rabu :) Pa sem verjetno ene 10x videl tole piko spredaj v tutorialih, pa mi ni kapnilo da bi lahk tut to uporabil..
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
c0dehunter ::
Še eno vprašanje, če lahko.
Kako bi tukaj ven extractal posamezne podatke, npr. 2003 za total RAM?
free -m total used free shared buffers cached Mem: 2003 1464 539 0 82 830 -/+ buffers/cache: 550 1452 Swap: 975 0 975
Kako bi tukaj ven extractal posamezne podatke, npr. 2003 za total RAM?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Zgodovina sprememb…
- spremenilo: c0dehunter ()
Daedalus ::
cat /proc/meminfo je precej bolj parsabilen.
Man is condemned to be free; because once thrown into the world,
he is responsible for everything he does.
[J.P.Sartre]
he is responsible for everything he does.
[J.P.Sartre]
c0dehunter ::
misek, pri vaji je uporaba awk žal prepovedana. Daedalus, kako pa bi tukaj ven extractal, torej brez awk?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Spura ::
V regexu si pozabil, da ubistvu ni tako, da bi sledil znak, ki ni dvopicje, ampak sledi konec vrstice.Regex je torej "codehunter$".
c0dehunter ::
V regexu si pozabil, da ubistvu ni tako, da bi sledil znak, ki ni dvopicje, ampak sledi konec vrstice.Regex je torej "codehunter$".
Ta problem smo sicer rešli že par postov nazaj, ampak ni res da sledi konec vrstice, ker so lahko z presledki nanizani tudi drugi uporabniki v skupini, tako da to ne bi delovalo. Je pa res da je moj primer tak, ker sem pač poenostavil.
Trenuten aktualni problem pa je par postov višje :)
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
c0dehunter ::
ne, tudi sed ni dovoljen Torej sed in awk nista dovoljena, ostalo je. Ni pa važno ali z regularnimi izrazi ali ne, samo da se dobi rezultat ki ga iščem.
iz /proc/meminfo lahko takole extractam (sem ugotovil):
Torej z tr -cd odrežem vse, kar ni cifra. Vendar je to precej omejeno, npr. če bi še kje v vrstici bila kaka cifra ne bi delovalo
*kar se mi dogaja ravno zdajle :)
iz /proc/meminfo lahko takole extractam (sem ugotovil):
cat /proc/meminfo | grep "MemTotal" | tr -cd '[[:digit:]]'
Torej z tr -cd odrežem vse, kar ni cifra. Vendar je to precej omejeno, npr. če bi še kje v vrstici bila kaka cifra ne bi delovalo
*kar se mi dogaja ravno zdajle :)
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Zgodovina sprememb…
- spremenilo: c0dehunter ()
milc ::
Verjetno je tudi perl prepovedan:
Ali pa tudi tako:
cat /proc/meminfo | grep "MemTotal" | perl -pe 's/.* (\d*) .*/"$1"/'
Ali pa tudi tako:
cat /proc/meminfo | grep "MemTotal:" | cut -d: -f2 | xargs | cut -d' ' -f1
Daedalus ::
Daedalus, kako pa bi tukaj ven extractal, torej brez awk?
Ah, na par grdih načinov bi šlo
cat /proc/meminfo | grep -r MemTotal: | tr -d [a-z,A-Z] | tr -d : | tr -d " "
Al pa variacija na milca:
cat /proc/meminfo | grep -r "MemTotal:" | cut -d: -f2 | tr -d [a-z,A-Z] | tr -d " "
Načeloma gre tak... pač pogrepaš vrstico, ki jo rabiš, pol jo pa po korakih "posekaš" - preveč lačni regexi so pa vedno problem.
Man is condemned to be free; because once thrown into the world,
he is responsible for everything he does.
[J.P.Sartre]
he is responsible for everything he does.
[J.P.Sartre]
Zgodovina sprememb…
- spremenilo: Daedalus ()
c0dehunter ::
Hvala Z awk-om bi tole šlo res hiter ampak ne vem zakaj so ga "prepovedali"..
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
bigbada ::
@codehunter, kako si naredil
in tabelarični izpis ?? A lahko prilimaš ukaz prosim :)
Napišite skripto Bash, ki prikaže status sistema glede na: - CPU, - primarni pomnilnik, - disk, - omrežje.
in tabelarični izpis ?? A lahko prilimaš ukaz prosim :)
c0dehunter ::
Za vsako izmed teh stvari sem pač poiskal in extractal par ustreznih informacij, ki kažejo status sistema.
Recimo za CPU sem izpisal št. procesov ki trenutno tečejo in average load-e - slednje sem extractal kar iz izpisa ukaza w, recimo za zadnjo minuto:
Tabelarični izpis je lahko karkoli, v konči fazi tudi html tabela izpisana, tako da sem izpis preprosto oblikoval kar z echo ukazom.
Upam, da ti kaj pomaga..
Recimo za CPU sem izpisal št. procesov ki trenutno tečejo in average load-e - slednje sem extractal kar iz izpisa ukaza w, recimo za zadnjo minuto:
CPU_LOAD1=$(w | grep "average:" | cut -d ' ' -f 12)
Tabelarični izpis je lahko karkoli, v konči fazi tudi html tabela izpisana, tako da sem izpis preprosto oblikoval kar z echo ukazom.
Upam, da ti kaj pomaga..
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | linux kernel porabi po nekaj casa malo manj kot 10 GB rama?Oddelek: Operacijski sistemi | 1600 (812) | Brane22 |
» | linux/HD/fsck/device is busyOddelek: Operacijski sistemi | 832 (645) | BRBR |
» | Makefile in c++Oddelek: Programiranje | 3059 (2099) | Looooooka |
» | linux vdor -- nekdo skenira druge prek SSH ?Oddelek: Operacijski sistemi | 1627 (1286) | terryww |
» | Skripte (strani: 1 2 )Oddelek: Programiranje | 8710 (6573) | Microsoft |