Linuxコマンドとツールを使用してファイルを解析する方法を学びたいと思います。私はgrep/awk/sedを最大限に活用する方法についていつも混乱しています。
これは特定のユースケースです。
次の文字列を含むログファイルがあります。
Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: SRV3 Socket IP: 192.168.2.6
Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: TESTSRV4 Socket IP: 10.1.2.3
Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: SRV1 Socket IP: 192.168.2.15
Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: TESTSRV2 Socket IP: 10.1.2.4
私の目標は、「エージェント識別子」の後に表示されるホスト名と各行の関連IPアドレスを抽出してtxtファイルにエクスポートすることです。最良の解決策は何ですか?
答え1
これを行う:
$ cat file.log | awk '{ print $16, $19 }'
次のリストが返されます。
SRV3 192.168.2.6
TESTSRV4 10.1.2.3
SRV1 192.168.2.15
TESTSRV2 10.1.2.4
目的の場所に出力をリダイレクトできます。たとえば、次のように追加します。
> hosts.text
名前付きファイルにデータを出力します。ホスト.txt
上記はすべての内容を中断(交換)します。ホスト.txt文書。ファイルの末尾にデータを追加するには>>
。>
答え2
sed方法:
sed -n 's/.* Agent Identifier: \(.*\) Socket IP: \(.*\)/\1 \2/p' inputfile > host_list.txt
ホストのリスト.txt文書内容(cat host_list.txt
):
SRV3 192.168.2.6
TESTSRV4 10.1.2.3
SRV1 192.168.2.15
TESTSRV2 10.1.2.4