FreeBSD Manual Pages
sf_sed(3) Library Functions Manual sf_sed(3) NAME sed_compile, sed_exec, sed_free -- string editor SYNOPSIS #include <strfunc.h> sed_t * sed_compile(char *expr); char * sed_exec(sed_t *se, char *string); svect * sed_results(sed_t *se); void sed_free(sed_t *se); DESCRIPTION These routines implement a subset of sed(1) or Perl's s///, y/// and // functionality. You must compule your expression with sed_compile() in order to evalu- ate it later. Once compiled, it can be evaluated multiple times. See the EXPRESSIONS block to know about expressions semantics. sed_free() used to destroy the compiled structure and free the allo- cated memory. sed_exec() takes the source string and transforms it according to the compiled rules. Resulting string stored in the internal buffer within the specified sed_t structure. sed_results() May be invoked multiple times after sed_exec() to obtain last match results. An 'r' flag should be specified within the expres- sion string. EXPRESSIONS Currently, this library supports two types of string transformations and one type of string match. Substitutions Expressions of this type are defined in the following BNF: <delim> := '/' | <other_character> <regex> := <regular_expression, re_format(7)> <to> := <string> <flags> := *( 'g' | 'i' | 'e' | 'r' | 'm' | 'n' ) <expr> := s <delim> <regex> <delim> <to> <delim> <flags> Refer to sed(1) manual page to know other details. Table lookup <delim> := '/' | <other_character> <flags> := *( 'i' ) <expr> := y <delim> <string> <delim> <string> <delim> <flags> String match <delim> := '/' | <other_character> <flags> := *( 'i' | 'r' | 'm' | 'n' ) <reply> := <string> <expr> := <delim> <string> <delim> [ <reply> <delim>] <flags> In the last case, if string does not match, sed_exec() will return a NULL pointer, <reply> otherwise. s/// and y/// functions will never re- turn a NULL pointer. Flags are common to those transformations. 'i' case-insensitive matches. 'e' compile in extended mode (REG_EXTENDED). 'g' Make the substitution for all non-overlapping matches of the regular expression, not just the first one. 'r' Remember last match results to allow use of sed_results(). 'm' Compile for newline-sensitive matching (REG_NEWLINE). 'n' Don't include zero regexec(3) match (a whole substring) into results list. EXAMPLE void main() { sed_t *se1; sed_t *se2; sed_t *se3; char *r1, *r2, r3; /* Compile expressions */ se1 = sed_compile("s/(tree) (apple)/\\2 \\1/igr"); se2 = sed_compile("y/abc/AbC/i"); se3 = sed_compile("/apple/i"); r1 = sed_exec(se1, "Tree Apple"); r2 = sed_exec(se2, "abcabc"); r3 = sed_exec(se3, "another apple tree"); /* ** This will produce: ** "Apple Tree\nAbCAbC\n1\n" */ printf("%s\n%s\n%d\n", r1, r2, r3?1:0); /* ** This will produce: ** "[Tree Apple], [Tree], [Apple]\n" */ printf("[%s]\n", sjoin(sed_results(se1), "], [")); /* Free the resources */ sed_free(se1); sed_free(se2); sed_free(se3); }; SEE ALSO strfunc(3). AUTHORS Lev Walkin <vlm@lionet.info> FreeBSD Ports 14.quarterly December 4, 2000 sf_sed(3)
NAME | SYNOPSIS | DESCRIPTION | EXPRESSIONS | EXAMPLE | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sed_exec&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>
