정규표현식을 이용한 텍스트 문서의 재정렬...

junsa80의 이미지

인제 시작인데... 첨 부터 이렇게 막혀버리다니....

다시한번 부족한 능력을 탓하며... 눈물을 흩뿌리면서 이렇게 질문올립니다

CDS     coplement(join(1..10,11..20,21..30))
CDS     join(31..40,41..50,51..60)
CDS     61..70
CDS     complement(71..80)

라는 텍스트 파일이 있습니다. 임의로 victory.lst라 하겠습니다
이것을

 1 (space5칸) 10 (space5칸) C
11                  20                  C
21                  30                  C
31                  40                  N
41                  50                  N
51                  60                  N
61                  70                  N
71                  80                  C

이런 폼으로 재정렬을 해야합니다.

뒤의 C와 N이 나오게 되는 규칙은 complement의 유무라 하겠습니다.

하루 종일 sed와 정규표현식만으로 이를 성사시키려 했으나.... :evil: 화만나더군여....

그래서 awk도 좀 이용해서 필드나누는 것도 참조를 해봤습니다.

이 방법, 저 방법 다 생각하고 짜집고 하다보니 (모로가도 설만가도 된다고 했던가여.....ㅜㅜ) 결과는 저렇게 출력이 되지만 말도안되게 정규식이 길어지는 바람에

차라리 손으로 나누는 것이 낫겠다는 생각이 문뜩.....ㅡㅡ;

고수일수록 정규식이 짧아진다는 말이 맞나봐여....

약간의 힌트라도 좋습니다. 뭔가 새로운 아이디어가 필요한데....

Help Me!!!!! Please...... :mrgreen:

ai의 이미지

$ perl -pe '$c=m/complement/i?"C":"N";s/.*?(?:(\d+)\.{2,}(\d+))(?:[^\d]+)?/$1 $2 $c\n/g;' victory.lst
1 10 C
11 20 C
21 30 C
31 40 N
41 50 N
51 60 N
61 70 N
71 80 C

fotmatting 은 적당히 쓰시면..

War doesnt determine whos right, just whos left.

alfalf의 이미지

굳이 sed에 replace만 사용해야 한다면

sed 's/^CDS \+//g; /complement/s/\([0-9]\+\)\.\.\([0-9]\+\)\(,\)\?/\1 \2 C\3/g; /complement/!s/\([0-9]\+\)\.\.\([0-9]\+\)\(,\)\?/\1 \2 N\3/g; s/,/\n/g; s/[a-z()]//g' victory.lst

와 같이 하시면 될것 같네요.

junsa80의 이미지

:D 가르침 감사합니다

큰 도움이 되었습니다...

저도 공부해서 당당히 답변달수 있는 사람이 되어야 겠습니다

그럼 다시한번 감사드리며.... 꾸벅

Never give up!!!

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.