Portál AbcLinuxu, 13. května 2025 22:06

Dotaz: hledani v promenne

8.1.2006 11:51 jashin
hledani v promenne
Přečteno: 191×
Odpovědět | Admin
Prosim o radu. Potreboval bych v souboru najit nejvyssi cislo ktere se tam vyskytuje - konkretne nejvyssi UID v souboru /etc/passwd. Postupoval jsem zatim tak, ze jsem si vypsal vsechna UID do promenne :

PROMENNA=$(grep ':x:[[:digit:]]*:' /etc/passwd | cut -d: -f3)

to mi ulozi do PROMENNA napr. 0 23 344 65534 1000 jak zjistim nejvyssi cislo z teto promenne?

Nebo da se zjistit nejvyssi UID jinym, jednodussim zpusobem?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.1.2006 11:55 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: hledani v promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
zkus něco jako:
getent passwd | awk -F: '{print $3;}' | sort -n | tail -1
-- Nezdar není hanbou, hanbou je strach z pokusu.
8.1.2006 12:09 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: hledani v promenne
když už awk, tak by bylo lepší to udělat přímo v něm:
  awk -F: 'BEGIN { m = 0; } { if ($3 > m) m = $3; } END { printf("%d\n", m); }' /etc/passwd
Ale asi by bylo vhodné ošetřit uživatele nobody, který mívá něco jako 65534.
8.1.2006 11:57 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: hledani v promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyvaruj se přímého přístupu k souboru /etc/passwd, protože na některých systémech ten soubor vůbec uživatele nemusí obsahovat. Uživatelské účtu můžou být třeba v LDAPu nebo MySQL nebo v nějakém jiném zdroji dat.

Proto je lepší používat program getent s parametrem passwd.
-- Nezdar není hanbou, hanbou je strach z pokusu.
8.1.2006 12:07 jashin
Rozbalit Rozbalit vše Re: hledani v promenne
Jezis, to je presne rada kterou jsem potreboval, moc dekuju! jen jeste jeden upresnujici dotaz, potreboval bych vlastne vytahnout 2. nejvyssi cislo, protoze 65534 je mi na nic. Casem bych na to asi prisel, ale kdyz uz je tu ta diskuse... Zkousel jsem zmenit parametr tail na -2

getent passwd | awk -F: '{print $3;}' | sort -n | tail -2

, ale to samozrejme vypisuje posledni 2 hodnoty. Jak tedy vytahnu napr. 2 nejvyssi, nebo 4 nejmensi (to bude asi parametr head), atd?

Jeste jednou diky za radau!

8.1.2006 12:10 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: hledani v promenne
Co takhle zapojit hlavu (pun intended) a přidat '| head -1'?
8.1.2006 12:18 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: hledani v promenne
Btw. u mne head i tail použití parametru -1 nedoporučují:
finn ~ # less /etc/ntp.conf | head -1
head: `-1' option is obsolete; use `-n 1' since this will be removed in the future
server clock1.zcu.cz
Užívej dne – možná je tvůj poslední.
8.1.2006 12:20 jashin
Rozbalit Rozbalit vše Re: hledani v promenne
No samozrejme, jak jednodychy kdyz se to umi... Delam v tom jen par hodin, takze i zaklady mi zatim delaj problemy.

Dekuju

8.1.2006 12:13 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: hledani v promenne
... | tail -n 2 | head -n 1
Užívej dne – možná je tvůj poslední.
8.1.2006 18:13 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: hledani v promenne
getent passwd | cut -d: -f3 | sort -nr | sed -n 2p
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
8.1.2006 12:52 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: hledani v promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
Následující program vypíše nejvyšší UID a jméno příslušného uživatele:
#!/usr/bin/env python
import pwd

max = 0
for item in pwd.getpwall():
  if item.pw_uid > max:
    max_uid = item.pw_uid
    user = item.pw_name
print "Nejvyssi UID je %d a ma ho uzivatel %s" %(max_uid, user)
8.1.2006 12:54 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: hledani v promenne
Jestli ono to v tom awku nebylo přeci jen jednodušší…
8.1.2006 12:55 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: hledani v promenne
Jaký má smysl každou blbost přepisovat do pythonu? Dnes je to asi móda...

Na podobné blbosti, zvlášť když jsou součástí nějakého dalšího skriptu, je lepší použít standardně dostupné programy. Python (bohužel) není všude.
-- Nezdar není hanbou, hanbou je strach z pokusu.
8.1.2006 18:15 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: hledani v promenne
Taky jsem si toho všiml. Jen co bude nový hype jazyk, bude se to psát v jazyce bunzurubundu.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
8.1.2006 12:56 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: hledani v promenne
Šlo by to napsat i podstatně stručněji, ale je to hůř čitelné:
#!/usr/bin/env python
import pwd
print max ([x.pw_uid for x in pwd.getpwall()])
8.1.2006 19:41 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: hledani v promenne
Heč, můj dešvorc je větší:
perl -e 'while(defined ($_ = (getpwent)[2])){push @a, $_}print((sort{$b<=>$a}@a)[1])'
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.