
ログファイルがありますが、ログファイルから特定のポートデータを削除したいと思います。
ポート番号はです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