Portál AbcLinuxu, 6. května 2025 01:37

Dotaz: Sed. Vypsat vse az po urcity znak ?

31.8.2007 09:52 OgeeN
Sed. Vypsat vse az po urcity znak ?
Přečteno: 529×
Odpovědět | Admin
Ahoj,

jak rict sedu, aby vypsal vse z kazde radky az po urcity znak ?

Napr.: Jmena uzivatelu /etc/shadow . Tedy vypsat vse od zacatku radky az po dvoutecku.

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

Odpovědi

jose17 avatar 31.8.2007 09:58 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk -F: '{print $1}' /etc/shadow
Ja vim, on vi, ty nano!
jose17 avatar 31.8.2007 10:00 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed -r "s/(^[^:]*):.*/\1/" /etc/shadow
Ja vim, on vi, ty nano!
31.8.2007 10:53 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
a nebylo by jednodušší?
sed 's/:.*//' /etc/shadow
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é.
31.8.2007 19:03 jiri.b | skóre: 30 | blog: jirib
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
nechybi tu zpetna lomitka?
jose17 avatar 31.8.2007 10:04 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
a riešenie čisto pre bash: for r in $(cat /etc/shadow); do echo ${r%%:*}; done
Ja vim, on vi, ty nano!
31.8.2007 17:14 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?

U /etc/shadow vám to sice projde, ale už s /etc/passwd byste měl problémy (a otevírat /etc/shadow jen kvůli získání seznamu uživatelů je trochu nešťastné). Takže spíš

  while read r; do echo "${r%%:*}"; done < /etc/passwd

nebo

  while IFS=: read n r; do echo "$n"; done < /etc/passwd
31.8.2007 17:26 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
jen malé doplnění: někdy nejsou běžní uživatelé v /etc/passwd, takže je vhodné použít getent passwd |... (getent získá záznamy třeba i z ldapu a podobně, pokud je systém dobře nakonfigurován).
-- Nezdar není hanbou, hanbou je strach z pokusu.
31.8.2007 22:11 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Díky za doplnění. Hlavně že jsem zrovna ve středu ráno o nss_ldap a o tom, jak se správně zjišťují informace o uživatelích, povídal na školení… :-)
jose17 avatar 31.8.2007 10:06 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
cut -d: -f 1 /etc/shadow
Ja vim, on vi, ty nano!
31.8.2007 12:26 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
nechapem preco to kazdy musi riesit takymi monstrami ako awk, sed, ... ked cut napisany kusok vyzsie je uplne jednoduche a efektivne riesienie :o)
Milan 31.8.2007 12:42 Milan "Nemo" Cingroš | skóre: 27 | blog: Nautilus | Plzeň
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Podívejte se kdo to všechno poslal :-) To asi měla být jenom ukázka, kolik různých cest vede ke stejnému cíli. A abych pravdu řekl, moc se mi tahle ukázka líbí, je to takové Linuxové :-)
Soutěžte na české LinuxWiki a vyhrajte plyšového Tuxe.
31.8.2007 14:10 helemesecotonese
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Omyl, je to takove UNIXove :-)
wolf09 avatar 31.8.2007 15:31 wolf09 | skóre: 30
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Jo jeste to mohlo byt v PERLu
Zkusili jste to vypnout a znovu zapnout ?
jose17 avatar 31.8.2007 16:17 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
perl -pe 's/:.*//' /etc/shadow
Ja vim, on vi, ty nano!
31.8.2007 16:54 phero | skóre: 17 | blog: techblog
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
ruby -e 'IO.foreach("/etc/passwd") { |l| print l.sub(/(^.*?):.*/,"\\1") }'
Není to tak hezký, jen to ukazuje použití *? pro ungreedy match
31.8.2007 17:13 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Nebo takhle

ruby -e 'IO.foreach("/etc/passwd") { |l| puts l.split(":")[0]}'
31.8.2007 18:56 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
V pythonu třeba takhle:
[x.split(':')[0] for x in file('/etc/passwd')]
ale parsovat /etc/passwd kvůli tomu, aby se získaly nějaké informace o uživatelích není dobrý nápad. Takže raději
#!/usr/bin/python
import pwd
for user in pwd.getpwall():
    print user.pw_name
31.8.2007 20:35 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Sed. Vypsat vse az po urcity znak ?
Jeste tedy pro uplnost v ruby:
ruby -e 'require "etc"; Etc.passwd { |user| puts user.name }'

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.