Site TIPS PAGE🔎 SEARCH  Ξ INDEX  MAIN MENU  UP ONE LEVEL
 OJB's Web Site. Version 2.1. Mac Tip.You are here: tip tips mac owen2 
Tip

Up to OJB's Mac Tips List

Extract Columns Using Terminal

You can extract specific columns from text from the command line (Terminal app).

Use awk to extract a column. By default, columns are defined as non-space text separated by one of more whitespace characters (spaces or tabs) but this can be modified.

Here's a simple (pointless) example:
echo '111 2 3 4444 5' | awk '{print $2}'
This returns "2"

Note 1: The "print" is an awk command which prints a string, then a new line.
Note 2: The "$2" means return the second field.

This is useful to return a particular field from another command. Example:
ls -al | awk '{print $5}'
This displays the size (column 5) of all files in the current directory.

Here's a more complex example which shows the filename and the size, separated with "=":
ls -al | awk '{for (i=9; i<=NF; i++) printf $i " "; print "= " $5}'
Because the filename can contain spaces we need to show all columns after, and including, column 9.

Note 1: This works because the file name is the last field returned by "ls".
Note 2: The variable "NF" is built into awk and stores the number of fields.
Note 3: The "printf" awk command displays text without a line break.

You can use a different column separator (instead of the default whitespace) by using the "-F" option.

Here's an example:
echo "1,2,3,4,5,666,7,888,9" | awk -F"," '{print $7 " " $5 " " $6}'
Returns "7 5 666"




Warning: mysqli_connect(): MySQL server has gone away in /Library/WebServer/Documents/Owen2/Inc/Log.inc.php on line 8

Warning: mysqli_connect(): Error while reading greeting packet. PID=35740 in /Library/WebServer/Documents/Owen2/Inc/Log.inc.php on line 8

Warning: mysqli_connect(): (HY000/2006): MySQL server has gone away in /Library/WebServer/Documents/Owen2/Inc/Log.inc.php on line 8
Could not connect to MySQL: MySQL server has gone away