I need to find all the table names alone in all select statements in my query log. Is there any way to grep (or) any other option, to take the strings that comes immediately after the word FROM in my file ..
Example: file contains something like this
select a, b, c FROM `table1` join `table2` etc... insert into................. commit select * FROM `tablex` .............. select y,s,h FROM `tabley`................. . . .
Now I want the list of the distinct tables alone from the select stmts. i.e,
table1 tablex tabley
Advertisement
Answer
I’m not sure if I understand you correctly but if you want to extract the first word that comes after ‘from’ you can try something like this:
➜ tmp cat log
select id, name from account where name = 'John';
select * from price where id > 0;
➜ tmp cat log | gawk -F'from ' '{print $2}' | gawk '{print $1}'
account
price
➜ tmp
If you want to print names of joined tables as well you need to extend it.