Portál AbcLinuxu, 22. července 2025 01:53


Dotaz: Jak vyříznout z řádku jen poslední slovo?

3.7.2005 13:46 Mirek
Jak vyříznout z řádku jen poslední slovo?
Přečteno: 201×
Odpovědět | Admin
Mám skript, který se mi spustí po startu, ale nemůže uložit svůj pid, protože run ještě není přimountovaný, já ho chci ale vypnout i po startu, jenže jak ho vypnout když vysí v paměti pod jiným názvem (konkrétně S02resetator, nemusí to být vždy stejné) a vypínám ho pomocí /etc/init.d/resetator stop?

Potřebuji tedy vygrepnout z procesů jeho název v paměti, k tomu jsem použil příkaz:

top -d 1 -n 1 | grep reset | sed -n '1p'

A teď bych potřeboval vyříznout jen poslední slovo, nevíte někdo jak na to?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Bohumír Zámečník avatar 3.7.2005 14:14 Bohumír Zámečník | skóre: 19 | blog: bohous
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Šlo by to třeba takhle:

top -d 1 -n 1 | grep reset | sed -n '1p' |sed -r 's/[\t ]+/ /g'|cut -f13 -d" "
...byť dost neohrabaně :/ - ale funguje to.
"Dobrý den pane, nevíte, která bije?!"
3.7.2005 14:14 Tomáš Bláha
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když víte, kolikátý sloupec to je, tak
tr -s " " | cut -f číslo_sloupce -d " "
P.S. Není lepší místo topu použít ps?
3.7.2005 14:50 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
No, začal bych
ps --no-headers -eo pid,comm | grep reset
Ale nerozumím, několika věcem: proč se jmenuje pokaždé jinak, zda to celé nelze vyřešit bez grepování procesu, ...
3.7.2005 17:46 Smazáno | skóre: 21 | blog: tezkorict
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
No a zkončil bych:
| grep -v grep |  sed -e 's:.*\ ::'
3.7.2005 20:08 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
No, existují i horší konce, ale ten grep -v grep je noop.
3.7.2005 20:32 Mirek
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
Mnohonásobné díky všem co mi pomohli, zapsal jsem to tedy takto:

ps --no-headers -eo pid,comm | grep reset | grep -v grep | sed -e 's:.*\ ::' | sed -n '1p'
3.7.2005 20:54 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
Jako bych v příspěvku, na který odpovídáš, nepsal, že grep -v grep je tam úplně na prd. Nechápu ty zástupy grepů a sedů. Nedělá snad
ps --no-headers -eo pid,comm | sed -n '/reset/{s/ [^ ]*$//;p}'
co má?

Nedělá to tedy sed -n '1p', který taky nechápu -- pokud to matchne jen jeden proces, tak to je zbytečné. Pokud to matchne víc procesů a ty chceš jen jeden, tak ho máš vybrat pořádně, ne vzít náhodně první z nich.
3.7.2005 21:45 Smazáno | skóre: 21 | blog: tezkorict
Rozbalit Rozbalit vše Re: Jak vyříznout z řádku jen poslední slovo?
Nojo, to se to dřív postuje než testuje a pak to takhle dopadá...

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.