로그 파일에서 특정 포트 번호의 기록을 제거합니다.

로그 파일에서 특정 포트 번호의 기록을 제거합니다.

로그 파일이 있지만 로그 파일에서 특정 포트 데이터를 제거하고 싶습니다.

포트 번호는 입니다 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기본값은 구분 기호로 공백임) 의 /22696/시작 위치( ^)에서 끝 위치( )까지 정확히 일치하는 항목( )을 확인 $하고 결과( !)를 반전시킵니다.

아니면 더 간단합니다(감사합니다.로마 페레크레스트):

awk '$2!=22696' file

잠재적으로 큰 로그 파일을 안전하게 편집하려면 다음 명령 세트를 사용해 보십시오.

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

그런 다음 파일 권한 변경을 사용해야 할 수도 있습니다 chmod.

답변2

를 사용하면 grep이러한 선의 패턴을 정의하고 옵션을 사용하여 선택을 반전할 수 있습니다 -v.

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

답변3

동일한 효과를 얻으려면 다음 명령을 사용하십시오.

입력 파일 ==> 2줄로 구성되며, 한 줄에는 22696개의 항목이 있고 다른 줄에는 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

관련 정보