スペースで定義された列(7番目の列:/ user1 / index ...)の一部を削除したいと思います。私のログファイルの例は次のとおりです。
192.xx.xxx - - [07/Apr/2017:14:21:15 +0200] "POST /user1/index.php?m=xxxxx&doajax=do_ajax_request&action=xxxx HTTP/1.1" ...
192.xx.x.xx - - [07/Apr/2017:14:21:15 +0200] "GET /user2/index.php?m=xxxxx&doajax=do_ajax_request&action=xxxxx HTTP/1.1"....
すべてのユーザーを削除したいです。これはuser1とuser2を意味します。これは、ユーザーに関係のない要求を分析したいからです。
192.xx.xxx - - [07/Apr/2017:14:21:15 +0200] "POST /index.php?m=xxxxx&doajax=do_ajax_request&action=xxxx HTTP/1.1" ...
192.xx.x.xx - - [07/Apr/2017:14:21:15 +0200] "POST /index.php?m=xxxxx&doajax=do_ajax_request&action=xxxxx HTTP/1.1"....
リクエストを取得するためにこのコマンドを試しましたが(/index.php?m=xxxx)cat /var/log/test.log | {print $ 7} '| awk -F / '{print $3}'私の要求を見つけることができる7番目の列でこの要求を置き換える方法がわかりません。ありがとうございます。
ベストアンサー1
sed 's,POST /[^/]*/,POST /,' logfile | awk ...
または、デフォルトのフィールド区切り文字(FS)を使用している場合は、awkスクリプトで
sub ("POST /[^/]*/", "POST /", $7) ;