패턴 검색 함수

seeker의 이미지

unix c ( c++ )에서요.

인수로 패턴스트링을 받아드여
파일속에서 해당하는 문자열을 뽑아내려하는데요.
(한마디로 grep같은 .)

패턴 검색하는데 쓰이는 함수. 어떤걸 쓰면되는지요?

aero의 이미지

정규표현식 함수를 사용하면 됩니다.

참고:
http://database.sarang.net/study/c/glibc/16.html#3

meconfidence의 이미지

aero wrote:
정규표현식 함수를 사용하면 됩니다.

참고:
http://database.sarang.net/study/c/glibc/16.html#3

저는 파일내에 있는 string을 검색하고 싶은데, 정규표현식 함수를 어떻게 이용해야 할지 잘 모르겠네요....

정규표현식 함수에서,
함수 : int regcomp (regex_t *compiled, const char *pattern, int cflags)
regex_t는 구조체(memory 값)로 알고 있습니다...
이를 파일과 어떻게 관련시킬까요??
다 메모리로 읽어들일수밖에는 없나요??

항상 감사하는 마음으로...

sangwoo의 이미지

regexec의 argument중에는 string buffer (char *) 가 있습니다.
fgets 같은 함수로 파일을 읽어서 라인별로 저장한후, 매칭시키면 되겠죠.

----
Let's shut up and code.

meconfidence의 이미지

sangwoo wrote:
regexec의 argument중에는 string buffer (char *) 가 있습니다.
fgets 같은 함수로 파일을 읽어서 라인별로 저장한후, 매칭시키면 되겠죠.

네.. 답변 감사합니다. :D

그런데, 결국에는 메모리에 저장해야되는군요.. 흠....
바로 검색할수 있는 것이 있으면 참 좋겠네요.. ^^a

항상 감사하는 마음으로...

pynoos의 이미지

말씀하신 수준에서는 그 어떤 것도 메모리에 읽지 않고 처리할 수 있는 것은 없습니다.

흔히 상상할 수 있는 grep 조차도 메모리에 읽는 것입니다.

인생 쉽게 사는 것이 만만치 않습니다.

lacovnk의 이미지

pynoos wrote:

인생 쉽게 사는 것이 만만치 않습니다.

멋집니다 :twisted:

작년 수업에서, 교수님이 종종 하시던 멘트가

Life is not easy... 던가 -_-;; (그새 기억이 가물...)

choissi의 이미지

meconfidence wrote:
sangwoo wrote:
regexec의 argument중에는 string buffer (char *) 가 있습니다.
fgets 같은 함수로 파일을 읽어서 라인별로 저장한후, 매칭시키면 되겠죠.

네.. 답변 감사합니다. :D

그런데, 결국에는 메모리에 저장해야되는군요.. 흠....
바로 검색할수 있는 것이 있으면 참 좋겠네요.. ^^a

mmap을 사용하면 귀찮은 일들을 줄일 수는 있습니다.

Quote:
MMAP(2) Linux Programmer's Manual MMAP(2)

NAME
mmap, munmap - map or unmap files or devices into memory

SYNOPSIS
#include <unistd.h>
#include <sys/mman.h>

#ifdef _POSIX_MAPPED_FILES

void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);

int munmap(void *start, size_t length);

#endif

DESCRIPTION
The mmap function asks to map length bytes starting at offset offset from the file (or other object)
specified by the file descriptor fd into memory, preferably at address start. This latter address is
a hint only, and is usually specified as 0. The actual place where the object is mapped is returned
by mmap, and is never 0.

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

댓글 달기

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