다음과 같은 파일이 있습니다.
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 < foo
grep
sed
cat
쉘 순수주의자들은 일반적으로 불필요하게 별도의 프로세스를 시작하기 때문에(그리고 cat
제어하는 것이 목적이기 때문에 ) 이 사용에 반대합니다.고양이파일 생성...).
답변3
행을 삭제하려면 다음 플래그를 in.log
사용할 수 있습니다 .-i
sed
sed -i '/^http:\/\/[0-9]/d' in.log
답변4
이것은 이미 작동하지만
/^http:\/\/[0-9]/
일치합니다.
http://1.hello.word
"전체 IP" 사용 일치/^http:\/\/[0-9\.]*$/
어디
[0-9\.]
숫자와 점을 일치시키세요...*
...0회 이상..$
...라인이 끝날 때까지.