
次の文字列があります。
2017-09-17T21:01:15,914 INFO [01196526] :sasadm@saspw - New client connection (155885) accepted from server port 8561 for SAS token user sasadm@saspw. Encryption level is Credentials using encryption algorithm SASPROPRIETARY. Peer IP address and port are [::ffff:191.0.0.7]:39962 for APPNAME=/SASAuthorizationServices - Visual Data Builder 7.4.
2017-09-17T23:58:17,043 INFO [01211539] :sastrust@saspw - New client connection (163346) accepted from server port 8561 for user sastrust@saspw. Encryption level is Credentials using encryption algorithm SASPROPRIETARY. Peer IP address and port are [::ffff:191.0.0.7]:37400 for APPNAME=Content Server 9.4.
私はそれらを次に置き換えなければなりません。
2017-09-17T21:01:15,sasadm@saspw,LOGIN,SUCCESS,Successful Login
または
2017-09-17T23:58:17,sastrust@saspw,LOGIN,SUCCESS,Successful Login
これをしましたが、期待した結果は得られませんでした。
sed -n '/New client connection ([0-9]*) accepted from server port [0-9]* for/{s/,.* user \(.*\)\. .*/,\1,LOGIN,SUCCESS,Successful Login/;p}'
これは私のエラー出力です。
2017-09-17T21:01:15,sasadm@saspw. Encryption level is Credentials using encryption algorithm SASPROPRIETARY,LOGIN,SUCCESS,Successful Login
答え1
あなたの試みは非常に近いです。
$ sed -n '/New client connection ([0-9]*) accepted from server port [0-9]* for/{s/,.* user \(.[^.]*\)\. .*/,\1,LOGIN,SUCCESS,Successful Login/;p}' file1
2017-09-17T21:01:15,sasadm@saspw,LOGIN,SUCCESS,Successful Login
2017-09-17T23:58:17,sastrust@saspw,LOGIN,SUCCESS,Successful Login
変更する唯一のことは、パターンが\(\)
user@host以外のものと一致しないことです。したがって.*
、sedは可能な限り貪欲な一致=一致を実行するため、使用しないでください。を使用すると、.[^.]*
最初に見つかった時点までのすべての文字が一致します。