로그 파일이 있지만 로그 파일에서 특정 포트 데이터를 제거하고 싶습니다.
포트 번호는 입니다 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