Find a sub chain in a file

Hello,

I have a logfile from which i would to extract date and login information.
(the goal is to find the inactive users).
To extract the date, no problem.
To extract the login, i'm stuck.

I first extract lines which contains the logging-in information, i obtain different lines.
Here are 2 lines from the log:

2009/07/30_00:02:10.30      COM_srv.2   ::S::   xxxxxxxx:xxxxxxxx:xxxxxxxx(RULE:xxx) (FROM:_INBOX.xxxxxx.xxxxxxx.xxxxx) (TO:QUERYSRVdefault) MSG= >>L FwExecuteServerSideRuleTxn msgTag=_INBOX.xxxxxxx.xxxxxxx.xx name=xxxxxxxx attributes={ { class=xxxxxxxxx { class=A1 "PARAMETER" } {class=A1 "VALUE" } } { "USERID" "BV26" } { "PASSWORD" "xxxxxxxx" } { "KEYINFO" "xxxxxxxxxxx" } { "CHKPASSWD" "T" } { "TUNNELID" "" } { "xxx" "xxxxxxx_xxxxxx_xxxxxxxxx" } }
2009/07/30_00:02:16.31      COMM_srv.2   ::R::   xxxxxxxxx:xxxxxxx:xxxxxx (RULE:xxx) (FROM:xx) (TO:xx) MSG= {DATA=">>L xxxxxxxxxxx xxx xxxxx=QUERYSRVdefault name=xxxxxxxxxx attributes={ { class=xxxxxxx { class=A1 "PARAMETER" } { class=A1 "VALUE" } } { "USERID" "BG77" } { "PASSWORD" "xxxxxxxxx" }{ "KEYINFO" "xxxxxxxxxxx" } { "CHKPASSWD" "T" } { "TUNNELID" "" } { "TID" "xxxxxxxxx_xxxxxx_xxxxxxxxx" } }"}

How could i extract the login value (the field after "USERID", BV26 ou BG77 in may example) in csh ?
I've tried different awk but my poor knowledge on it didn't help me.

Thank in advance.

using Perl:

perl -nl -e 'if (m/\"USERID\"\s\"(.*?)\"/) { print $1; }' logfile

Thanks Yogesh, you're the best :slight_smile:

That's exactly what i wanted.

Have a good day !