The original logfile sample:
“GET /dynamic_preroll_playlist.fmil?domain=13nwuc&width=480&height=360&imu=medrect&pubchannel=filmannex&ad_unit=category_2&sdk_ver=2.4.1.3&embeddedIn=http%3A%2F%2Fwww.filmannex.com%2Fmovie%2Fend-of-the-tunnel%2F20872&sdk_url=http%3A%2F%2Fstatic2.filmannex.com%2Fflash%2F&viewport=10,261,971,0,971,0,10,261 HTTP/1.1″, 200, 201, 1516, 16363, “http://static2.filmannex.com/flash/yume_ad_library.swf“, pl.networks.com, “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; GTB7.3; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FunWebProducts; .NET4.0C)”, “24_100_150_188_jZKFKQQjdRNM6e”, “0rO0ABXd8AAAACgAAASQAAAaLAAAGiwAAASgAAAaLAAAGiwAAAVoAAAaLAAAGiwAAAVkAAAaKAAAGiwAAAdwAAAaKAAAGiwAAAhIAAAaKAAAGiwAAAhUAAAaKAAAGiwAAAhYAAAaKAAAGiwAAAhsAAAaKAAAGiwAAAiwAAAaKAAAGiw**”, “-“, “-“, “@YD_1;233_2739”, -, “-“, “24.100.150.188”, “199.127.205.6”
The required output is the 3rd and 4th field of viewport:
971 0
I used the command:
sed -n 's/.*viewport=\([^&]*\)/\1 /p' filename
get the wrong output : 10,261,971,0,971,0,10,261** HTTP/1.1", 200, 201, 1516, 16363, ..... too much redundant info following it.
Can anyone help me with this problem? Use the sed command fetch the 3rd and 4th parameter of viewport?
Thanks so much in advance 🙂
Just use awk
Note: Third argument to
matchis available only ingawk, so this script is gawk-specific.Explanation: we provide regex to
matchfunction, which captures third and fourth field inviewport.matchreturns non-zero value if provided regex can be successfully matched against some substring of whole record.Then it just prints captured groups.