[정규표현식] Domain 목록 중 2차 Domain만 추출하고 싶습니다.

자일자일의 이미지

안녕하세요.

dev.www.example.com
www.example.com
mail.example.com
example.com
test.co.kr
example.co.jp

위와 같은 Domain 목록을 다음과 같은 형식으로 변경하고 싶습니다.

example
example
example
example
test
example

Linux Terminal에서 Sed, Perl 같은 프로그램의 정규표현식을 이용해서 변환하고 싶은데
어떻게 하면 좋을지 감이 오지 않네요.

Domain 형식이 일정하면 awk등을 이용하여 특정 필드만 추출하면 간단할텐데
2차 domain부터 4차 domain 까지 다양한 형식이 있어요.

도움 부탁드립니다.
고맙습니다.

prankenmk2의 이미지

저건 뒤의 com, co.kr, co.jp 같은 example뒤의 도메인 이름을 배열로 넣어서 각각으로 검사해서 잘라야 할듯 한데요...

Prentice의 이미지

:%s/\(.*\.\)\?\([^.]\+\)\.\(com\|co\.[a-z]\{2\}\)$/\2/g

Vim에서라면 저렇게 할 수 있습니다.

.* 아무거나 앞에 오고 \. 마침표가 오는 것을 \(\) 묶음으로 생각하되 \? 찾을 수 있으면 찾고, 못 찾으면 말고

[^.] 마침표가 아닌 것이 \+ 한 번 이상 나오면 \(\) 묶음으로 생각하고

\. 마침표가 온 다음에, com이 오거나 "co. 다음 [a-z] 알파벳이 \{2\} 두 번 나오는 것"이 오거나 하는 것을 \(\) 묶음으로 생각하고

그 다음엔 아무 것도 없이 $ 줄이 끝나는 것을 다른 걸로 / 교체하는데 \2 두 번째 묶음으로 교체하면 나오겠네요.

자일자일의 이미지

설명해주신 내용처럼 따라 해보니 원하는 결과가 출력되네요.

VIM은 물론, sed에서도 완벽합니다.
-# sed -e 's/\(.*\.\)\?\([^.]\+\)\.\(com\|co\.[a-z]\{2\}\)$/\2/g' example.txt

저는 아직 멀었네요. :(
더 많이 공부해야겠습니다.

고맙습니다.

자일자일의 이미지

실제 적용해야 하는 대상에는
example.kr
example.net
example.or.kr 등 몇 개 도메인이 더 포함되어 있어 아래 내용과 같이 변경하였더니
'co.kr' 도메인에서 오류가 발생되네요.

1. sample.txt
[user1@wwwexample tmp]$ cat sample.txt
dev.www.example.com
www.example.com
mail.example.com
example.com
test.co.kr
example.co.jp
example.kr
www.example.kr
dev.www.example.kr

2. example.kr 오류
[root@wwwexample tmp]# cat sample.txt | sed -e 's/\(.*\.\)\?\([^.]\+\)\.\(com\|kr\|co\.[a-z]\{2\}\)$/\2/g'
example
example
example
example
co
example
example
example
example

그래서 아래와 같은 방법을 생각해서 적용하였습니다.
원하는 값이 출력되네요.

다른 나은 방법이 있다면 소개 부탁드려요.

[user1@wwwexample tmp]$ cat sample.txt | sed -e 's/co\.kr/\kr/g' -e 's/\(.*\.\)\?\([^.]\+\)\.\(net\|com\|do\|biz\|or\.[a-z]\{2\}\|kr\|co\.[a-z]\{2\}\)$/\2/g'
example
example
example
example
test
example
example
example
example

고맙습니다.

qiiiiiiiip의 이미지

진지하게 실사용을 고려하고 툴을 만드신다면,
결국 맨 처음 답변대로 하실 수 밖에 없을듯요..
유지보수 측면에서라도요..

Prentice의 이미지

이렇게 하시면

^\.\(com\|org\|net\)$\|^\.\(\(\(co\|or\|ne\)\.\)\?[a-z]\{2\}\)$

.com
.org
.net
.kr
.jp
.de
.co.kr
.or.jp
.ne.de

요거는 다 잡을 수 있고

.ne.bug

요거는 안 잡습니다.

시작이랑 끝이랑 괄호랑 좀 다듬으시면 될 것 같네요.

자일자일의 이미지


제목을 수정하여 '완료' 말머리를 달고 싶은데
아무리 찾아봐도 편집/수정 메뉴가 보이질 않습니다.

어렵지 않게 수정할 수 있던걸로 기억하는데
찾을수가 없네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.