Help with regular expression

OS version: RHEL 7.4
Shell : bash

I have a file which has lines like below. As you can see , they are SELECT queries.

SELECT * FROM  S_DEALER_USER WHERE ROWNUM < 100;
SELECT * FROM  S_DEALER_USER_WEB_PROFILE WHERE ROWNUM < 100;
SELECT * FROM  S_USER_ROLE_MASTER WHERE ROWNUM < 100;
SELECT * FROM  S_DEALER_USER_ROLE_MAP WHERE ROWNUM < 100;

The third field/word in each line needs to copied and printed on the top along with the PROMPT.

for example, if the line is "SELECT * FROM EMP WHERE ROWNUM < 100;" , then "PROMPT EMP" needs to printed on top of this line like below

PROMPT EMP
SELECT * FROM EMP WHERE ROWNUM < 100;

I have shown the expected output below. Any I idea how I can achieve this ?

-- expected output

PROMPT S_DEALER_USER
SELECT * FROM  S_DEALER_USER WHERE ROWNUM < 100;
PROMPT S_DEALER_USER_WEB_PROFILE
SELECT * FROM  S_DEALER_USER_WEB_PROFILE WHERE ROWNUM < 100;
PROMPT S_USER_ROLE_MASTER
SELECT * FROM  S_USER_ROLE_MASTER WHERE ROWNUM < 100;
PROMPT S_DEALER_USER_ROLE_MAP
SELECT * FROM  S_DEALER_USER_ROLE_MAP WHERE ROWNUM < 100;

Hello kraljic,

Could you please try following and let me know if this helps you.

awk '{print "PROMPT",$4 ORS $0}'   Input_file

Thanks,
R. Singh

2 Likes

It worked. Thank You Ravinder