IP 주소가 포함된 행을 어떻게 삭제합니까? [폐쇄]

IP 주소가 포함된 행을 어떻게 삭제합니까? [폐쇄]

다음과 같은 파일이 있습니다.

http://example.mx
https://test.com
http://4.3.4.4
http://dev.somedomain.com
http://1.3.4.2

IP가 있는 항목을 제거하고 싶으므로 결과는 다음과 같습니다.

http://example.mx
https://test.com
http://dev.somedomain.com

내가 한 일은 다음과 같습니다.

cat  in.log |  sed  '/^http:\/\/[0-9]/d'  > out.log

그러나 이것은 작동하지 않습니다.

답변1

하지만 그것은하다일하다. 귀하의 질문에 정답이 이미 존재하는 것 같습니다.

$ cat in.log
http://example.mx
https://test.com
http://4.3.4.4
http://dev.somedomain.com
http://1.3.4.2
$ cat  in.log |  sed  '/^http:\/\/[0-9]/d'  > out.log
$ cat out.log
http://example.mx
https://test.com
http://dev.somedomain.com
$

답변2

삭제하려는 것 같습니다.철사귀하의 입력에. 그 외에도 sed매우 간단한 해결책이 있습니다 grep -v.

grep -v 'http://\([0-9]\+\.\)\{3\}[0-9]\+' in.log

cat또한 어느 쪽이든 여기서는 and 파이프가 필요하지 않습니다 . 일반적 cat foo | bar으로 다음으로 대체될 수 있으며, 이 특정 인스턴스에서는 파일 이름을 파이프가 필요하지 않거나 필요한 인수로 전달할 수 있습니다.bar < foogrepsed

cat쉘 순수주의자들은 일반적으로 불필요하게 별도의 프로세스를 시작하기 때문에(그리고 cat제어하는 ​​것이 목적이기 때문에 ) 이 사용에 반대합니다.고양이파일 생성...).

답변3

행을 삭제하려면 다음 플래그를 in.log사용할 수 있습니다 .-ised

sed -i '/^http:\/\/[0-9]/d' in.log

답변4

이것은 이미 작동하지만 /^http:\/\/[0-9]/일치합니다.

http://1.hello.word 

"전체 IP" 사용 일치/^http:\/\/[0-9\.]*$/

어디

  • [0-9\.]숫자와 점을 일치시키세요...
  • *...0회 이상..
  • $...라인이 끝날 때까지.

관련 정보