1

ファイルには次のような行が含まれています。

1363650803.076     48 192.168.20.58 TCP_MISS/417 1963 POST http://collector-4.newrelic.com/agent_listener/invoke_raw_method? - NONE/- text/html
1363650863.426      0 192.168.20.58 TCP_MISS/417 1963 POST http://collector-4.newrelic.com/agent_listener/invoke_raw_method? - NONE/- text/html
1363650898.698  63995 192.168.20.61 TCP_MISS/000 0 GET http://65.55.122.235/2.0/blugro5relay.groove.microsoft.com/p9xyqk93z98qti59r7taftbcxe3s6rt52n4drjs,ConnType=LongLived,ContentLength=2147479552 - DIRECT/65.55.122.235 -
1363650898.698  63995 192.168.20.61 TCP_MISS/000 0 POST http://65.55.122.235/2.0/blugro5relay.groove.microsoft.com/p9xyqk93z98qti59r7taftbcxe3s6rt52n4drjs,ConnType=LongLived - DIRECT/65.55.122.235 -
1363650899.199  63991 192.168.20.61 TCP_MISS/000 0 GET http://65.55.122.235/2.0/blugro5relay.groove.microsoft.com/xatanmtq99upj97qtps89zqnx99wqsyeuc5yefa,ConnType=KeepAlive - DIRECT/65.55.122.235 -
1363650899.199  63991 192.168.20.61 TCP_MISS/000 0 POST http://65.55.122.235/2.0/blugro5relay.groove.microsoft.com/xatanmtq99upj97qtps89zqnx99wqsyeuc5yefa,ConnType=KeepAlive - DIRECT/65.55.122.235 -

各行からホスト名/IP アドレスを取得したい。

この sed コマンドの何が問題になっていますか?

sed -rn "s@//([^/]+)/@\1@" access.log
4

1 に答える 1

3

まず、-n各行の印刷を回避します。それを除く。

次に、行全体を一致させ、グループ化されたコンテンツですべて置き換えます。

第 3 に、より正確に一致させるためにhttp:直前に追加します。//

次のようになります。

sed -r "s@^.*http://([^/]+).*@\1@" infile

これにより、次の結果が得られます。

collector-4.newrelic.com
collector-4.newrelic.com
65.55.122.235
65.55.122.235
65.55.122.235
65.55.122.235
于 2013-03-21T18:13:13.443 に答える