Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Hrátky z řádky: kombinace procesů podruhé

Clock
Clock (neregistrovaný)
25. 2. 2008 0:22 Nový

Me muze klepnout

celé vlákno
To me vzdycky muze klepnout kdyz resim jestli mam tech backslashu napsat 4 nebo 7 a pak nakonec stejne nevim a musim to vyzkouset (a ukaze se ze spravne reseni bylo 13). Pak mi prasknou nervy a napisu to v C a mam to hned a chodi to jako vino :)
A
A (neregistrovaný)
25. 2. 2008 1:35 Nový

Re: Me muze klepnout

celé vlákno
No tak alespoň že amprsandy vám problém nedělají :P
uživatel si přál zůstat v anonymitě
25. 2. 2008 9:38 Nový

Re: Me muze klepnout

celé vlákno
Ono to tak slozity zase neni, jen si musis uvedomit, co se kde jak interpretuje, hlavne teda specialni znaky - "'\,$()[]{}*?<> {{{mezera}}}. Takze kdyz chces neco z tohohle pouzit jako obyc znak, tak pred to musis dat bud zpetny lomitko, nebo to dat do apostrofu. Nektery znaky se ale interpretujou i v uvozovkach - \ a $, takze tam pak je nutny je escapovat zpetnym lomitkem. Takze kdyz chces predat zpetny lomitko, tak \\ nebo '\' nebo "\\".

Druha vec je, co chces kam poslat - pokud chces do nejakyho programu s regexpem vlozit zpetny lomitko, tak v regexpech je taky backslash escape znak, takze v regexpech musis psat taky \\. Takze pak bys musel napr. v grepu napsat bud grep '\\' nebo grep "\\\\" nebo grep \\\\
uživatel si přál zůstat v anonymitě
26. 2. 2008 1:09 Nový

Re: Me muze klepnout

celé vlákno
ty se vubec posledni dobou ukazujes byt docela lama :)
A
A (neregistrovaný)
25. 2. 2008 1:33 Nový

man cut

celé vlákno

Zde je příklad vyzobnutí prvního sloupce (vlastně slova) z každého řádku

$ cut -d " " < vstup.txt > vystup.txt

To těžko, RTFM. Nevidím tam specifikaci že prvního, ani že sloupce-vlastně-slova. Nebo máte nějaký unix co neznám.

Pak malá rada v bashi bych skoro myslel používat $() místo ``, pokud člověk není nostalgik. Výhoda je v možnosti použít uvozovky bez escapování

text="$(< "/path/to/file name.txt")"

Ondřej Bojar
28. 2. 2008 17:24 Nový

Re: man cut

celé vlákno
To je taková drobná kontrola, jestli někdo ty příklady taky zkouší ;-)

Ne, vážně. Chybí tam samosebou "-f1". Díky opravu, i za doporučení $(), jak je vidět, jsem asi nostalgický dost.
mirozbiro
mirozbiro (neregistrovaný)
25. 2. 2008 7:41 Nový

cut -d : delimitery bez regexpu?

celé vlákno
Zdar,
uz delsi dobu dumam nad timto:
df | cut -d" " -f 4-4
vysledek je naprd

hadejte co chci - chci vyprintit pouze jeden sloupec z df. Bohuzel
se zda, ze delimitery 'cut' neznaji regexpy. Rad bych jako delimiter
treba \s+.

A tak mi zbyva delat cut -b50-70

Umi cut regexpy?
mir
SAL
SAL (neregistrovaný)
25. 2. 2008 7:51 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
Cut je primitivny nastroj, teda nevie regularne vyrazy.

Pokial chces zobrazit stvrty stlpec, tak sa na to hodi awk, ktory je podobne rychly, ale vie toho ovela viac:

df | awk '{ print $4 }'

Popripade este odrez prvy riadok (komentar):

df | awk '{ print $4 }' | tail -n +2
uživatel si přál zůstat v anonymitě
25. 2. 2008 9:23 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
Nebo elegantneji:

df -k | awk 'NR > 1 {print $4}'

-k proto, ze ne vsude vypisuje df jednokilove bloky.
uživatel si přál zůstat v anonymitě
25. 2. 2008 9:32 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
A ja bych jeste prihodil ...

df -kP | awk 'NR > 1 {print $4}'

Kdyz je dlouhy nazev device, tak zbyle parametry df nahaze na dalsi radek, aby sedelo zarovnani sloupcu. Volba -P nahaze vsechno na jeden radek, takze to nebude sice hezky zarovnane (ale to v pripade awku nepotrebujeme), ale bude to na jedne radce a print $4 opravdu vytiskne volne misto.
Peter Helcmanovsky aura:56
25. 2. 2008 9:57 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
Osobne preferuji "df -h" (human) aby to automaticky prepinalo mezi k,M a G dle potreby, kdyz si vysledny vystup ctu ja, je mi to prijemnejsi nez mit vsechno v kilo. (ale nekdy se to hodi)
uživatel si přál zůstat v anonymitě
25. 2. 2008 11:36 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
jojo, jen tak pro prehled df -h, ale pro zpracovani (napr. sort) zasadne df -m:)
uživatel si přál zůstat v anonymitě
25. 2. 2008 11:16 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
df | sed 's/^\([^ ]* *\)\{3\}\([^ ]*\).*/\2/'
uživatel si přál zůstat v anonymitě
25. 2. 2008 11:23 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
df | perl -lane 'print $F[3]'
uživatel si přál zůstat v anonymitě
25. 2. 2008 11:38 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
a vida - prestoze perl pouzivam denne, prepinac "-l" nejak unikl me pozornosti - ode dneska bude hojne pouzivan:)
uživatel si přál zůstat v anonymitě
25. 2. 2008 14:45 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
df | tr -s " " | cut -d" " -f4
Palo
Palo (neregistrovaný)
25. 2. 2008 19:42 Nový

Re: cut -d : delimitery bez regexpu?

celé vlákno
df | while read a b c d e f; do echo -e "$a $d"; done
Peter Helcmanovsky aura:56
25. 2. 2008 10:02 Nový

kdyz uz autor zacal s tim ktery "sort" se vlastne spousti

celé vlákno
a vubec s $PATH, mohl by jeste rozebrat jak pustit prikazy mimo $PATH, specialne soubory z aktualniho adresare a vysvetlit proc ta potreba tam dat "./" existuje, spousta lidi odchovanych na DOSu ma totiz problem na tohle a) prijit b) akceptovat to.
Kdyz jim reknu ze je to security aby nebylo mozne jednoduse podhodit zamaskovany cizi kod, tak to prijimaji o dost lip nez kdyz jim jenom reknu "dej tam ./, pak to funguje". :)
Ondřej Bojar
28. 2. 2008 17:31 Nový

Re: kdyz uz autor zacal s tim ktery "sort" se vlastne spousti

celé vlákno
Velmi správná připomínka. Díky.

Já osobně paranoik přes bezpečnost nejsem, ale když jsem tečku v $PATH míval, "cizí" (vlastní) kód jsem si podhodil celkem často. Hlavní důvod skoro vůbec nespoléhat na $PATH a speciálně ve skriptech psát plné cesty ke všemu (zejm. vlastnímu) je pro mne nyní to, že mám od stejného programu desítky vývojových verzí a když dělám experiment, potřebuju spolehlivě vědět, jaké komponenty se vlastně použily. Ovšem věda není denním chlebem každého...
Karel Zak aura:100
25. 2. 2008 12:11 Nový

Command substitution

celé vlákno
Jen poznamka:
$ export PATH=`echo $PATH | tr : '\n' | sort -u | tr '\n' :`
je "old-style backquoted form", prehlednejsi je:
$ export PATH=$(echo $PATH | tr : '\n' | sort -u | tr '\n' :)
hlavne $( ) je mozne celkem snadno vnorovat.
$ echo $(foo $(bar --opt))
gilhad Gilhad aura:100
25. 2. 2008 18:54 Nový

backslashe

celé vlákno
jo jo, s backslashema se uzije legrace ... to se pak ve skriptu objevi treba i toto:
NAME2=`head -n 1 cdname 2>/dev/null|sed "s/[^ ]* [^ ]* \\"\\\(.*\\\)\\"/\1/"|   sed "s/\\\\\/\\\\\\\\\\\\\/g;s/\\\`/\\\\\\\\\\\`/g;" | sed 's/\\"/\\\\\\\\\"/g'|sed "s/'/\\\\\\\\'/g"`
zimous
zimous (neregistrovaný)
26. 2. 2008 0:57 Nový

${...}

celé vlákno
Kdyz uz tu byl takovej peknej flame cut/awk/perl/..., pripomnel bych, ze jednoduchy nahrazovani de i primo v bashi. Cas od casu, kdyz si nepamatuju _zacatek_ prikazu, tak pouzivam: ls ${PATH//:/ } | grep neconeco (btw. newline misto mezery v tomhle prikladu asi nejde, co?) Celkove by tahle a podobny konstrukce (dal treba ${VAR##.JPG} pri prejmenovavani v cyklu) mozna staly za zminku.
Ondřej Bojar
28. 2. 2008 17:35 Nový

Re: ${...}

celé vlákno
Nevykrádejte mi příští díly ;-) Tohle chci určitě lehce zmínit.

Ale když o tom přemýšlím obecněji, tak se mi líbí, jak se ten seriál rýsuje. článek nahodí téma, osvětlí základy, a pak diskuse dodá krom nutných oprav i spoustu souvisejících tipů. Díky za ně, O.
uživatel si přál zůstat v anonymitě
16. 3. 2008 10:17 Nový

Jako malé cvičení zkuste...

celé vlákno
type echo
echo is a shell builtin
uživatel si přál zůstat v anonymitě
16. 3. 2008 10:20 Nový

Re: Jako malé cvičení zkuste...

celé vlákno
a ještě jsem zapomněl dodat: echo "$0"
Zasílat nově přidané příspěvky e-mailem