shell - Using awk and grep command in for loop -


consider below code snippet:

#! /bin/ksh in `grep "processorderwebservice-n" orders.log | grep "::stringfromnetwork  =  600001" | awk -f',' '{print $1}'`;     echo $i; done;  2015-05-26 10:20:10 2015-05-26 10:20:49 2015-05-26 10:21:45 

from command prompt, when run command:

grep "processorderwebservice-n" orders.log | grep "::stringfromnetwork  =  600001" | awk -f',' '{print $1}' 

the output received below.

2015-05-26 10:20:10 2015-05-26 10:20:49 2015-05-26 10:21:45 

the grep pattern searching in file orders.log below:

2015-05-26 10:20:10,847 : processorderwebservice-n|220082|1|::stringfromnetwork  =  600001 - reference number 26000033 

basically want output in loop 2015-05-26 10:20:10. in above case, date , time printed in different lines.

multiple greps , awks in pipes never needed. job can done 1 single tool:

grep -op '^[^,]+(?=.*processorderwebservice-n.*::stringfromnetwork  =  600001)' file 

gives desired list. if need for loop, have change internal field separator first:

ifs=$'\n' line in $(grep -op '^[^,]+(?=.*processorderwebservice-n.*::stringfromnetwork  =  600001)' file);   echo $line done 

but, recommend while loop, when deal lines:

grep -op '^[^,]+(?=.*processorderwebservice-n.*::stringfromnetwork  =  600001)' file | while read line;   echo $line done 

Comments