Pages

Monday, May 9, 2016

calculations in bash


Arithmetic Operators Order of Precedence

Operators are evaluated in order of precedence. The levels are listed in order of decreasing precedence (quoting form the bash man page).

       id++ id--
              variable post-increment and post-decrement
       ++id --id
              variable pre-increment and pre-decrement
       - +    unary minus and plus
       ! ~    logical and bitwise negation
       **     exponentiation
       * / %  multiplication, division, remainder
       + -    addition, subtraction
       << >>  left and right bitwise shifts
       <= >= < >
              comparison
       == !=  equality and inequality
       &      bitwise AND
       ^      bitwise exclusive OR
       |      bitwise OR
       &&     logical AND
       ||     logical OR
       expr?expr:expr
              conditional operator
       = *= /= %= += -= <<= >>= &= ^= |=
              assignment
       expr1 , expr2

              comma

Arithmetic calculations using Inbuilt bash options

value1=5;value2=7
addition=$(( value1 + value2 ))
echo "$value1 + $value2 = $addition "

value1=5;value2=7
subtraction=$(( value1 - value2 ))
echo "$value1 - $value2 = $subtraction "
subtraction=$(( value2 - value1 ))
echo "$value2 - $value1 = $subtraction "

value1=5;value2=7
division=$(( value1 / value2 ))
echo "$value1 / $value2 = $division "
division=$(( value2 / value1 ))
echo "$value2 / $value1 = $division "

value1=5;value2=7
multiplication=$(( value1 * value2 ))
echo "$value1 * $value2 = $multiplication "

value1=5;value2=7
modulus=$(( value1 % value2 ))
echo "$value1 % $value2 = $modulus "
modulus=$(( value2 % value1 ))
echo "$value2 % $value1 = $modulus "

value1=5;value2=7
post_increment=$(( value1++ ))
echo "$value1 after post increment = $post_increment "
post_decrement=$(( value2-- ))
echo "$value2 after post decrement = $post_decrement "

value1=5;value2=7
pre_increment=$(( ++value1 ))
echo "$value1 after pre increment = $pre_increment "
pre_decrement=$(( --value2 ))
echo "$value2 after pre decrement = $pre_decrement "

value1=5;value2=7
exponentiation=$(( value1 ** value2 ))
echo "$value1 ** $value2 = $exponentiation "
exponentiation=$(( value2 ** value1 ))

echo "$value2 ** $value1 = $exponentiation "



Arithmetic calculations using let command

value1=5;value2=7
let addition=value1+value2
echo "$value1 + $value2 = $addition "

value1=5;value2=7
let subtraction=value1-value2
echo "$value1 - $value2 = $subtraction "
let subtraction=value2-value1
echo "$value2 - $value1 = $subtraction "

value1=5;value2=7
let division=value1/value2
echo "$value1 / $value2 = $division "
let division=value2/value1
echo "$value2 / $value1 = $division "

value1=5;value2=7
let multiplication=value1*value2
echo "$value1 * $value2 = $multiplication "

value1=5;value2=7
let modulus=value1%value2
echo "$value1 % $value2 = $modulus "
let modulus=value2%value1
echo "$value2 % $value1 = $modulus "

value1=5;value2=7
let post_increment=value1++
echo "$value1 after post increment = $post_increment "
let post_decrement=value2--
echo "$value2 after post decrement = $post_decrement "

value1=5;value2=7
let pre_increment=++value1
echo "$value1 after pre increment = $pre_increment "
let pre_decrement=--value2
echo "$value2 after pre decrement = $pre_decrement "

value1=5;value2=7
let exponentiation=value1**value2
echo "$value1 ** $value2 = $exponentiation "
let exponentiation=value2**value1

echo "$value2 ** $value1 = $exponentiation "

Arithmetic calculations using expr command


value1=5;value2=7
addition=$( expr $value1 + $value2 )
echo "$value1 + $value2 = $addition "

value1=5;value2=7
subtraction=$( expr $value1 - $value2 )
echo "$value1 - $value2 = $subtraction "
subtraction=$( expr $value2 - $value1 )
echo "$value2 - $value1 = $subtraction "

value1=5;value2=7
division=$( expr $value1 / $value2 )
echo "$value1 / $value2 = $division "
division=$( expr $value2 / $value1 )
echo "$value2 / $value1 = $division "

value1=5;value2=7
multiplication=$( expr $value1 \* $value2 )
echo "$value1 * $value2 = $multiplication "

value1=5;value2=7
modulus=$( expr $value1 % $value2 )
echo "$value1 % $value2 = $modulus "
modulus=$( expr $value2 % $value1 )
echo "$value2 % $value1 = $modulus "

Arithmetic calculations using bc command

value1=5;value2=7
addition=$( echo $value1+$value2 |bc )
echo "$value1 + $value2 = $addition "

value1=5;value2=7
subtraction=$( echo $value1-$value2 |bc )
echo "$value1 - $value2 = $subtraction "
subtraction=$( echo $value2-$value1 |bc )
echo "$value2 - $value1 = $subtraction "

value1=5;value2=7
division=$( echo $value1/$value2 |bc )
echo "$value1 / $value2 = $division "
division=$( echo $value2/$value1 |bc )
echo "$value2 / $value1 = $division "

value1=5;value2=7
multiplication=$( echo $value1*$value2 |bc )
echo "$value1 * $value2 = $multiplication "

value1=5;value2=7
modulus=$( echo $value1%$value2 |bc )
echo "$value1 % $value2 = $modulus "
modulus=$( echo $value2%$value1 |bc )

echo "$value2 % $value1 = $modulus "

References :- http://www.softpanorama.org/Scripting/Shellorama/arithmetic_expressions.shtml


du command one liners


To display disk usage for a folder in human readable format

# du -h /home

To display disk usage for a folder in human readable format (including all subdirectories along with hidden files)

# du -ah /home

To display disk usage for a folder in KB

# du -k /home

To display disk usage for a folder in MB

# du –m /home

To display disk usage in human readable format and total at end line

# du –ch /home

To display disk usage by excluding some files or folders

# du -ah --exclude="*.txt" /home/

To display the disk usage based on modification of time, use the flag “–time”

# du -ha --time /home/



free command one liners


Default free shows memory statistics in KB

# free

To see memory statistics in Bytes

# free -b

To see memory statistics in KB

# free -k

To see memory statistics in MB

# free -m

To see memory statistics in GB

# free -g

To see memory statistics with total line

# free -t

To see memory statistics by disabling buffer adjusted line

# free -o

To repeat free command n seconds infinitly


# free -g -s 5

Sunday, May 8, 2016

sort command one liners


sort in default mode sorts the file in alphabetical order

# sort file_name

sort removes the duplicates using the -u option

# sort -u file_name

The default sort 'might' give incorrect result on a file containing only numbers, so to work bet on such file -n option can be used

# sort -n file_name

sort file numerically in reverse order using option -r

# sort -nr file_name

sort can sort multiple files as well.

# sort -n file_name1 file_name2

Sort can merge two files and remove duplicates

# sort -nu file_name 1 file_name 2

Sorting a file containing multiple fields, default sort will sort by first column

# sort file_name

sort file on the basis of 1st field delimited by “,”

# sort -t"," -k1,1 file_name
Where,
'-t' option is used to provide the delimiter in case of files with delimiter.
'-k' is used to specify the keys on the basis of which the sorting has to be done.
The format of '-k' is : '-km,n' where m is the starting key and n is the ending key.

Sorting file on the basis of the 2nd field delimited by “:”

# sort -t":" -k2,2 file_name

Sorting file on the basis of 2nd field , numerically:

# sort -t"," -k2n,2 file_name

Remove duplicates from the file based on 1st field delimited by “|”

# sort -t"|" -k1,1 -u file_name

Sort the file numerically on the 2nd field in reverse order delimited by “;”

# sort -t";" -k2nr,2 file_name

Sort the file alphabetically on the 1st field, numerically on the 2nd field delimited by “,”

# sort -t"," -k1,1 -k2n,2 file_name

sort a file based on the 1st and 2nd field, and numerically on 3rd field on  a file containing 5 columns:


# sort -t"," -k1,2 -k3n,3 file_name

Back To Top