vi의 치환과 정규식 초보 질문드립니다.

ho5ik의 이미지

안녕하세요~

제가 12MB 분량의 텍스트를 vi의 강력한 치환 기능을 이용해서
특정 형식으로 변환하고자 합니다.

M$ Windows 용 vi에서는 테스트에는 성공했으나
(이게 어찌된건지 잘 모르겠습니다. ^^; )
12MB 치환을 하면 메모리가 부족하다고 오류 메시지를 띄웁니다.
(512MB의 메모리가 부족하다니~ -..-; )

리눅스에서는 테스트조차 실패했습니다.
:%s/\n\(.*\)\n\(.*\)\n/\1 \2\n/g
테스트 시 수많은 줄이 달랑 한줄로 변하네요~ -..-;
gVim for M$에서는 어떻게 해서 된건지... -..-;
M$ 윈도우즈와 리눅스의 엔터값 때문인건지... -..-;
메모리를 또 사야 되는건지... -..-;

원본 텍스트의 형식은 다음과 같습니다.
엔터 + 단어 + 엔터 + 설명 + 엔터

만들고자 하는 텍스트의 형식은 다음과 같네요.
단어 + 공백 + 공백 + 설명 + 엔터

다음이 원본 예입니다.

abandon 2
n. 자유 분방; 방종; <영> 자포자기 with [in] ~ 멋대로, 흥에 겨워; 마음껏, 몸을 아끼지 않고

abandoned
a. 1 버림받은; 버려진, 황폐한(deserted): ~ building (사람이 살지 않는) 황폐한 건물 2 자포 자기한; 방자한, 파렴치한(immoral), 불량한 <녀석>, 방탕한 <여자> 3 자유 분방한

abandonee
n. 1 [법] 피(被)유기자 2 [해상보험] 피위탁자

abandoner
n. 1 [법] 유기자 2 [해상보험] 위탁자

abandonment
n. 1 포기 2 [법] 유기, 위탁 3 자포자기 4 = ABANDON2

만들고자 하는 텍스트의 예 입니다.

abandon 2  n. 자유 분방; 방종; <영> 자포자기 with [in] ~ 멋대로, 흥에 겨워; 마음껏, 몸을 아끼지 않고
abandoned  a. 1 버림받은; 버려진, 황폐한(deserted): ~ building (사람이 살지 않는) 황폐한 건물 2 자포 자기한; 방자한, 파렴치한(immoral), 불량한 <녀석>, 방탕한 <여자> 3 자유 분방한
abandonee  n. 1 [법] 피(被)유기자 2 [해상보험] 피위탁자
abandoner  n. 1 [법] 유기자 2 [해상보험] 위탁자
abandonment  n. 1 포기 2 [법] 유기, 위탁 3 자포자기 4 = ABANDON2

제발 알려주세요~

File attachments: 
첨부파일 크기
Plain text icon vi치환예제-4.txt1.31 KB
Image icon Untitled-2 copy.gif43.08 KB
ho5ik의 이미지

지금 이리저리 방법을 찾고 있는 중입니다.

:help pattern 도 찾아보고 있는데... 이해가 안가는 부분이 참 많네요. -..-;

구글링도 하고 있습니다만... 역시... 영어와 이해력이 딸리는 군요~

:%s/^$\n\(.*\)\n\(.*\)\n/\1 \2\n/g 를 해봤는데 윈도그gVim은 부분적으로 되는것 같긴 한데... ^@가 어디서? 왜? 나오는 건지? hex코드를 보니 000D0A네요... 아~ 어디서부터 찾아야 할지...

스샷 올립니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon 0바이트
ktd2004의 이미지

:%s/^\n\(.*\)\n\(.*\)/\1  \2/g

리눅스에서는 테스트 해보지 못했습니다.
도움 되시길.
smalljam의 이미지

Quote:
제가 12MB 분량의 텍스트를 vi의 강력한 치환 기능을 이용해서
특정 형식으로 변환하고자 합니다.

안녕하세요.문뜩 이 글을 읽다가,

vi의 read max line말고,
유닉수에서 한 파일 안에서 ,최대 라인수 제한이 있나가 궁금해졌습니다.

한파일의 맥수라인,있을까요?
아니면,몇라인을 넘으면,시스템에서 읽는데,성능이 현저하게 떨어지는
임계값이 있을까요?

아시는 분 있으면,한수 부탁드리겠습니다. :D

유닉스에서 한 디렉토리 내의 파일 수가 1만개가 넘어서면,파일 I/O 성능면에서
현저한 저하가 온다는 말씀은 들었습니다.

In the UNIX,
화일 시스템은 지평적인 공간 감각을 제공하며 ,
프로세스는 생명을 갖는 생명체와 같아보인다.
--BACH

ho5ik의 이미지

외할머니 생신이라 낮에 계속 밖에 있다가 지금 들어와서...
얼른... 페도라 밀고... ^^;
레드햇 9로 다시 돌아 갔습니다.
페도라가 좀 문제가 많은것 같아서... 제게는 벅차더군요~

알려주신대로 해봤더니... 제 와우 7.1에서... 잘 되는군요~ ^^
이야~~~ 너무 기쁜데요~
어찌 감사를 드려야 할지...

:%s/^\n\(.*\)\n\(.*\)/\1 \2/g

치환 참 오묘하네요~ 아무튼 감사드립니다. 열심히 살겠습니다.
행복하시고 건강하세요~

ho5ik의 이미지

그리고 smalljam님 죄송한데요~

제 글 밑에 질문을 올리신것 같은데... 그러시면...
답을 얻기가 조금 힘드실것 같은데요~ ^^;
따로 질문을 하시면 다른 분들이 제목을 보고
바로 답을 달아 주실수도 있지 않을까요?

제 질문 봐주셔서 감사합니다.
저도 한번 찾아 볼께요~ ^^

저도 갑자기 무지 궁금해지는데요?

smalljam님도 건강하시고 행복하세요~ 그럼 이만~

ps. 아! 맞다. 라인수라 하시면...
텍스트파일에 한정되는것 같은 느낌이 드는데...
그냥 파일이라고 앞에서 말씀을 하셨거든요?
그러면... 바이너리 파일(?)은 제외하시는건가요?
그건 의미가 없는것 같은데... 보통 파일(바이너리)들은
라인이라는게 없지 않나요?

댓글 달기

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