Today (Saturday) We will make some minor tuning adjustments to MySQL.

You may experience 2 up to 10 seconds "glitch time" when we restart MySQL. We expect to make these adjustments around 1AM Eastern Daylight Saving Time (EDT) US.


Substr with % - extract numbers only


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Substr with % - extract numbers only

Code:
 # cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)

I have this script that will monitor filesystems and send me e-amil alerts.

Code:
#! /bin/ksh 
DIST_LIST=monitor@...com

WORKDIR=/home/monitor
WARNLEVEL=90

MAIL_SUBJ="filesystems monitor on "$(hostname)

ALERT_ADMIN () { mail -s "${MAIL_SUBJ}"  $DIST_LIST  << EOF
Filesystem $fsname has reached $sz% of its capacity.
EOF
return
}

cd . > $WORKDIR/freespace.lst
exec 8< $WORKDIR/freespace.lst

df -k | grep -v -i Filesystem | grep -v ":" | awk '{print $5}' |  grep -v "%" | grep -v proc > $WORKDIR/freespace.lst

if [ -f $WORKDIR/freespace.lst ]
then
 while read -u8 fsname sz ;
   do
   if [[ $sz -gt $WARNLEVEL ]]
     then  
        ALERT_ADMIN
    fi 
done 
fi

rm $WORKDIR/freespace.lst

However, the ksh gets % as well.

Code:
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/vg00-rootlv            10G  1.9G  8.2G  19% /
devtmpfs                          189G     0  189G   0% /dev
tmpfs                             189G   39M  189G   1% /dev/shm
tmpfs                             189G  380M  188G   1% /run
tmpfs                             189G     0  189G   0% /sys/fs/cgroup
/dev/mapper/vg00-usrlv            5.0G  2.4G  2.7G  47% /usr
/dev/mapper/vg00-tmplv            8.0G   41M  8.0G   1% /tmp
/dev/mapper/vg00-homelv           4.0G   45M  4.0G   2% /home
/dev/mapper/vg00-usrlocallv       2.0G  674M  1.4G  34% /usr/local
/dev/mapper/vg00-optlv            8.0G  563M  7.5G   7% /opt
/dev/mapper/vg00-optstagelv        40G   18G   23G  44% /opt/stage
/dev/emcpowerg2                   976M  262M  648M  29% /boot
/dev/emcpowerg1                   200M  9.8M  191M   5% /boot/efi
/dev/mapper/vg00-varlv            4.0G  1.3G  2.8G  31% /var

Code:
19%
0%
1%
1%
0%
47%
1%
2%
34%
7%
44%
29%
5%
31%
31%
1%
4%
2%
11%

Please let me know how to grep numbers only..
I have tried substr($5,1,2) substr($1,1,2), but I am misssing something here.

Thank you!
# 2  
try the cmd tr:
Tried on my mac...
Code:
df -k | grep -v -i Filesystem | grep -v ":" | awk '{print $5}'| tr [%] [\12]


Last edited by vbe; 06-02-2019 at 06:59 AM..
# 3  
I guess you're looking for awk options / opportunities? There are several:
- just eliminate the last character: print substr ($5, 1, length($5)-1)
- eliminate the % character from $5: sub (/%/, "", $5), print $5
- or use a feature of awk when doing arithmetics: print $5+0


Once you're at it, and you're using awk anyhow, why not do all of it in awk?
Code:
df -k | awk '! /Filesystem|:/ {print $5+0}'

# 4  
An example with shell builtins
Code:
df -kP |
while read fs x x x sz mntp junk
do
  if [[ $fs == /dev/* ]] || [[ $mntp == /tmp ]]
  then
    sz=${sz%\%}
    if [[ $sz -gt $WARNLEVEL ]]
    then  
      ALERT_ADMIN
    fi
  fi
done

Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Substr/Instr in shell script or extract part of text
vedavrath
Hi, I need to extract part of a text to two variables text is "PL/SQL procedure successfully completed. ERROR ----------------------------------------------------------------- Test Error Message PLUSVAR ---------- 1" I want "Test Error Message" in one variable and "1" in another variable....... Shell Programming and Scripting
11
Shell Programming and Scripting
How to use substr to extract character between two semicolon?
sajmar
Dear folks Hello I have a data set which one of the column of this data set are string and I want to extract numbers which is between two ":". However, I know the substr command which will do this operation but my problem is the numbers between two ":" have different digits. this will make my...... Shell Programming and Scripting
11
Shell Programming and Scripting
Extract numbers from file name-how to ?
f150
Hello friends,I am new to Unix programming. how do I achieve the following in Unix shell script (I am running ksh on AIX) extract the number from name of file? My file format is like "LongFileName-1234.020614-221030.txt" now I want to extract value which is between (-) hyphen and (.) dot...... Shell Programming and Scripting
4
Shell Programming and Scripting
awk extract certain digits from file with index substr
sdf
I would like to extract a digit from $0 starting 2,30 to 3,99 or 2.30 to 3.99 Can somebody fix this? awk --re-interval '{if($0 ~ /{1}{2}/) {print FILENAME, substr($0,index($0,/{1}{2}/) , 4)}}'input abcdefg sdlfkj 3,29 g. lasdfj alsdfjasl 2.86 gr. slkjds sldkd lskdjfsl sdfkj kdjlksj 3,34 g...... Shell Programming and Scripting
4
Shell Programming and Scripting
extract numbers from a word
systemali
Hi ppl, I am a bit lost on this...can some one assist. I know this can be down with awk or sed, but i cant get the exact syntax right. I need to only extract the numbers from a signle word ( eg abcd.123.xyz ) How can i extract 123 only ? Thanks... Shell Programming and Scripting
14
Shell Programming and Scripting

Featured Tech Videos