SED交換の問題

SED交換の問題

次の文字列があります。

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は可能な限り貪欲な一致=一致を実行するため、使用しないでください。を使用すると、.[^.]*最初に見つかった時点までのすべての文字が一致します。

おすすめ記事