RULE OF THUMB FOR AWK: awk runs once per line (unless BEGIN or END script in which it runs once in start or end of script, or if you use /grep-search-expression/ then it runs once per search success)
awk -F “delimtier” ‘{ print $1 }’ inputfile > outputfile
or with setting the FS variable (Field Seperator in the awk program instead of in an argument):
awk ‘BEGIN { FS=”:” } {print $1}’ inputfile > outputfile cut looks like this – cut is made for this
cut -f1 -d: inputfile > outputfile
or with quotes on delimiter
cut -f1 -d”:” inputfile > outputfile
The upside is that AWK can use string delimiters where as CUT needs character delimiters
THINGS TO NOTE:
In cut the -d is the delimiter and the -f is the field number both are lower case.
In awk there is no -d just a -F which is the delimiter… (im sure awk has a -d Im just not talking about it right now)
SO WHAT DOES THIS DO?
This picks everything to the left of the first :, colon, it encounters on every line
awk -F”:” ‘{print $1}’ inputfile > outputfile
This is the same as:
awk ‘BEGIN { FS=”:” } {print $1}’
Here is a way to do these same lines without inputfile, outputfile but instead with pipes:
netstat -ntulp | awk ‘{ print $4}’ | cut -f1 -d”:” netstat -ntulp | awk ‘{ print $4}’ | awk -F”:” ‘{print $1}’ netstat -ntulp | awk ‘{ print $4}’ | awk ‘BEGIN { FS=”:” } {print $1}’
OUTPUT EXAMPLE: root@debikos71:/var/www# netstat -ntulp | awk ‘{ print $4}’ (only Local 0.0.0.0:111 0.0.0.0:46485 0.0.0.0:22 127.0.0.1:25 :::111 :::43120 :::22 ::1:25 :::50500 0.0.0.0:111 0.0.0.0:702 127.0.0.1:734 0.0.0.0:5353 0.0.0.0:50946 0.0.0.0:1900 0.0.0.0:44420 :::49219 :::111 :::702 :::5353 :::57121
ALL OF THE TOP COMMANDS OUTPUT ( I removed the extra spaces etc): (only Local 0.0.0.0 0.0.0.0 0.0.0.0 127.0.0.1 0.0.0.0 0.0.0.0 127.0.0.1 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 |