Empty set vs empty string vs nothing and Zen

From my explanations of the set theory to my daughter yesterday.

A set is a container, an empty string (ε or nothing) is an element. A set with nothing inside is not empty, because there is nothing inside. A set is empty (∅) if it does not have anything inside.

In python:

$ python
>>> nothing=''
>>> set=[nothing]
>>> set
>>> set.append('')
>>> set
['', '']
>>> set.remove('')
>>> set
>>> set.remove(nothing)
>>> set
>>> emptyset=[]
>>> emptyset

Doing nothing and not doing anything are two different things.

One-liner: how to check the SSL certificate expiration of several servers

for i in cnn.com bbc.co.uk
  exp=`echo | openssl s_client -connect $i:443  2>/dev/null | 
  openssl x509 -noout -dates | fgrep notAfter | sed -e 's/^.*=//'`
  echo "$i        $exp"

cnn.com	    Feb  6 12:00:00 2018 GMT
bbc.co.uk   Apr 20 10:01:10 2017 GMT

One-liner: how to count the total amount of specific lines in several files

Let’s calculate the amount of lines, containing the word “extended” in */*.conf files:

egrep -c extended */*.conf | 
awk 'BEGIN {FS=":"; sum=0;}{sum +=$2} END {print sum}'  

BTW, using awk alone is slower:

time awk 'BEGIN {sum=0;}/extended/{sum++} END {print sum}' */*.conf

real	0m0.94s
user	0m0.91s
sys	0m0.01s

time egrep -c extended */*.conf | 
awk 'BEGIN {FS=":"; sum=0;}{sum +=$2} END {print sum}'

real	0m0.13s
user	0m0.10s
sys	0m0.02s

fgrep is slower than egrep:

time fgrep -c extended */*.conf | 
awk 'BEGIN {FS=":"; sum=0;}{sum +=$2} END {print sum}'

real	0m0.21s
user	0m0.17s
sys	0m0.03s