Zdravím,
snažím se teď proniknout do kódování v bashi a mám trocho problém s chápáním některých věcí které bude asi nejlepší vysvětilit na příkladech.
Při poznávání jak funguje
cut jsem si zkoušel upravit výstup příkazu
ps. Narazil jsem na problém, že
cut -d " " bude dělit řádky po mezerách, ale to nefungovalo jak mělo pro
libovonlý počet mezer. Hledal jsem jak pro parametr
-d zadat libovolný počet mezer, ale
cut očekává jeden character.
Nakonec jsem našel řešení přez
tr -s " ", což v řetězci nahradí libovolné množství mezer za jednu jedinou a tak příkaz
ps -aux | tr -s ' '
vyhodí seznam procesů kde jsou v řádcích sloupečky oddělené jen jednou mezerou.
Pak jsem se to snažil dát do skriptu a narazil na tyhle věci:
PROC=`ps -aux`
echo $PROC
vypíše výstup z
ps bez zalamování do jednoho řádku. Aby se mi výtup zalomil musím použít
PROC=`ps -aux`
echo "${PROC}"
Což funguje ale zatím jsem nepřišel na to proč tomu tak ja/musí být.
No ale jak teď udělat to odstranění vícečetných mezer ?
echo $(echo $PROC | tr -s ' ')
mi všechno vypíše do jednoho řádku.
Ve výsledku bych se moc rád dobral stejného výstupu jako když v terminálu zadám
ps -aux | tr -s ' ' | cut -d " " -f1,2,3,4
Vím že na ostranění vícečetných mezer lze použít
awk/sed ale já bych hlavně moc rád pochopil jak to s tím víceřádkovým výpisem je a kde dělám co blbě.
Diky!