ログファイルから特定のポート番号の履歴を削除します。

ログファイルから特定のポート番号の履歴を削除します。

ログファイルがありますが、ログファイルから特定のポートデータを削除したいと思います。

ポート番号はです22696
ロギングの例は次のとおりです。

  87.14.101.122   22696   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0

答え1

以下を試してくださいawk

awk '$2 !~ /^22696$/' file

このコマンドは、2番目のフィールド(デフォルトは$2区切り文字で空白)の/22696/開始位置(^)から終了位置()まで正確に一致する項目()を確認し、$結果(!)を反転します。

それとももっと簡単です(ありがとう。ローマ・ペレクレスト):

awk '$2!=22696' file

潜在的に大きなログファイルを安全に編集するには、次のコマンドセットを試してください。

mv file{,.backup} && awk '$2!=22696' file.backup > file

その後、ファイル権限の変更を使用する必要がありますchmod

答え2

を使用すると、これらの線のgrepパターンを定義し、オプションを使用して選択を反転できます-v

grep -v '^ *[^ ]* *22696 ' file

答え3

同じ効果を得るには、次のコマンドを使用します。

入力ファイル==> 2行で構成され、1行に22696個の項目があり、もう1行に22697個の項目があります。

目標は、22696で構成された行を削除することです。

入力ファイル

 87.14.101.122   22696   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0
 87.14.101.122   22697   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0

注文する

sed -i '/22696/d' Inputfile

出力

87.14.101.122   22697   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0

関連情報