Conditional awk - for when grep is finding duplicates
>> Friday, 12 July 2019
My files that contain information about my databases often look like this (It's a dirty way to maintain a database inventory on a server with multiple databases when the database product itself doesn't have a concept of inventory):
Mydatabasename:/path/to/product/home:/path/to/conf/myfile.conf
Anotherdatabasename:/path/to/product/home:/path/to/conf/myfile2.conf
When the database name appears in 2 lines of the file a simple grep would bring back multiple lines:
mydb=$1
DBHome=grep -w $1 ${myfilelistingdbs}| awk -F ":" '{print $2}'
So do THIS instead:
mydb=$1
awk -F ":" -vx=$mydb '$1==x {print $2}' ${myfilelistingdbs}
It says: if the first field matches this then tell me second field contents
this solves problem of db name popping up in a home path
e.g
database_cola:/data/database_pepsi/product:/data/database_pepsi/conf/database_cola.conf
database_pepsi:/data/database_pepsi/product:/data/database_pepsi/conf/database_pepsi.conf
A grep on database_pepsi returned two product homes (and upset my scripts expecting only one line!)
Awk on first field means you only get one product home returned
How to change the attributes of a file in linux
>> Tuesday, 12 February 2019
-m change the modification time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
Read more...