ps h -C nejakyprogram -o pid | xargs killTo jako má být ukázka jak se to rozhodně dělat nemá. RTFM! A kupodivu funguje i
ps ax | perl -lane '/nejakyprogram/ && print $F[0]' | xargs killCo kdyby jste si to vážený napřed vyzkoušel, než tu budete plácat takové hovadiny. Už je to tu jak na MSživě(TM). Taky každej, kdo má do prdele díru, je chytrej jak rádio.
ps -ef | perl -lane'/nejakyprogram/&&$F[1]!=$$&&print$F[1]'A obdobné řešení s awk?
ps -ef | awk '/nejakyprogram/{if($2!=PROCINFO["pid"])print$2}'A jseš v prdeli jak baťa s dřevákama, protože PROCINFO není v POSIX standardu. Krom toho že je to delší je dost problém s POSIX awk vyloučit vlastní awk, ale nevyloučit ostatní co mají řetězec awk třeba mezi parametry.
for radek in open("neco.txt"):
print radek.split(";")[1]
mi pripada srozumitelnejsi a pro rychlou orientaci lepsi nez zdrojak zacinajici treba takto:
BEGIN {FS = ";"}
{print $2}
Tohle je samozrejme primitivni kod, ale u slozitejsich veci to zacne byt casem mnohem horsi.
find ./dir -maxdepth 1 -type f -printf '%f\n' | awk -F'_' '{print $1}'
nebo
for f in dir/*; do [ -f $f ] && f="${f#*/}" && echo "${f%%_*}"; done
A nebo použít perl :-)P.S.: A ještě před tím si přečtěte "Jak se správně ptát" a příště nám nejdříve zdělte co to k sakru má dělat.
P.P.S.: To druhé je jen taková ukázka, že správný perlista dokáže napsat perlový kód v čemkoli
ls -l | awk '{ print $3 " " $8; }'
Když mám soubory s mezerami, vypíše se mi jenom první část jména. A řekněme, že u symbolických linků bych chtěla vědět, kam ukazují, takže bych potřebovala něco jako "od osmého sloupce až do konce". Jde to?