.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PROLIX 1p" .TH PROLIX 1p "2012-02-04" "perl v5.14.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" prolix \- trim chatty command outputs .SH "VERSION" .IX Header "VERSION" version 0.03 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& # Run spammy_command and log its output, but weed out some output \& prolix \-b \*(Aq(spam)\*(Aq \-l auto \-\- spammy_command cmd_opt1 cmd_opt2 \& \& # While it\*(Aqs running, hit enter and add another ignore term at the \& # interactive prompt \& prolix> ignore_substring (more spam) \& \& \& # Weed uninteresting fields out of a log file. \& # Pipe mode is not interactive; but it accepts the same filtering \& # arguments as the full interactive mode. \& tail \-f error.log | prolix \-s \*(Aqs/^\e[(.*?\e] ){3}//\*(Aq .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBprolix\fR launches a command and captures its standard output and error. It suppresses uninteresting lines. Unlike \f(CW\*(C`grep \-v\*(C'\fR, it is an interactive program; hit \fBenter\fR to add suppression patterns as new anoyances come up on your terminal. You can weed out by full or substring line matches, as well as regexp. You can also apply substitutions to lines, for example shorten overly chatty fields. .PP prolix can be configured to automatically store a filtered log of output from the commands that it captures. .PP When running in a pipeline, prolix can't interact with you, but it does accept the same command line parameters, so it acts like a replacement for \f(CW\*(C`sed\*(C'\fR, \f(CW\*(C`grep \-v\*(C'\fR, and \f(CW\*(C`grep \-E \-v\*(C'\fR. .PP [Planned] You can have prolix remember different profiles for different command invocations, so that if you often debug a server, prolix (which knows your command line) will identify what ignore/snippet patterns to apply to it. .SH "OPTIONS" .IX Header "OPTIONS" Normally you will run prolix with: .PP .Vb 1 \& prolix [PROLIX OPTIONS] \-\- somecommand [COMMAND OPTIONS] .Ve .PP You can also put prolix in a pipeline. .PP .Vb 1 \& somecommand | prolix [PROLIX OPTIONS] .Ve .IP "\-v, \-\-verbose" 4 .IX Item "-v, --verbose" When specified, \f(CW\*(C`prolix\*(C'\fR will add some output of its own, for example saying it's in pipe mode. .IP "\-p, \-\-pipe" 4 .IX Item "-p, --pipe" Force pipe mode. .IP "\-l, \-\-log=FILENAME" 4 .IX Item "-l, --log=FILENAME" Log filtered output to \s-1FILENAME\s0. If the argument looks like a pathname (contains a \*(L"/\*(R"), we'll use that. Otherwise, the output will go to the temporary directory (as defined by File::Spec\->tmpdir). .Sp The special value \*(L"auto\*(R" lets prolix pick a filename based on the command being run. .Sp The substring \*(L"%d\*(R" is expanded to a timestamp in a path-friendly variation of iso8601. More substitutions may be added in the future. .IP "\-r, \-\-ignore\-re=REGEXP" 4 .IX Item "-r, --ignore-re=REGEXP" Ignore files matching \s-1REGEXP\s0. This is case-sensitive; use \f(CW\*(C`(?i:...)\*(C'\fR to ignore case. (\-i may be added in the future.) .IP "\-n, \-\-ignore\-line=LINE" 4 .IX Item "-n, --ignore-line=LINE" Ignore complete matches on \s-1LINE\s0. .IP "\-b, \-\-ignore\-substring=SUBSTRING" 4 .IX Item "-b, --ignore-substring=SUBSTRING" Ignore lines containing \s-1SUBSTRING\s0. .IP "\-s, \-\-snippet=s/SEARCH_RE/REPLACE/" 4 .IX Item "-s, --snippet=s/SEARCH_RE/REPLACE/" Transform lines by applying a Perl substitution on them. Useful, for example, in getting rid of uninteresting fields in a logfile. .Sp Here, modifiers \f(CW\*(C`/i\*(C'\fR, \f(CW\*(C`/g\*(C'\fR, and \f(CW\*(C`/x\*(C'\fR are honored. You can also use alternate delimiters instead of \f(CW\*(C`/\*(C'\fR, including balanced ones (\f(CW\*(C`s{a}{b}\*(C'\fR.) .Sp We'll add facilities for doing this in a more convenient way for structured lines in future versions. (For example, \s-1CSV\s0 or Apache \s-1CLF\s0.) .SH "INTERACTIVE MODE" .IX Header "INTERACTIVE MODE" When \f(CW\*(C`prolix\*(C'\fR launches a program itself (as opposed to pipe mode), pressing \fBenter\fR pauses the display of output from the program, and you're dropped into a prompt. Here you can add more patterns to ignore or apply new snippetting rules. These will take effect on subsequent output. Blank input returns you to the normal running of the command. .PP The interactive mode has a \*(L"help\*(R" command listing available commands. Those that add new filters follow the long command line options. So for example, saying \*(L"ignore_substring temptation\*(R" will ignore all lines containing \&\*(L"temptation\*(R". .PP You can also say \*(L"pats\*(R" to list all patterns in effect, and \*(L"clear_all\*(R" to remove them. (Removing a particular rule is not supported but we can add it if it is requested.) .SH "SUPPORT" .IX Header "SUPPORT" You can find documentation for this module with the perldoc command. .PP .Vb 1 \& perldoc App::Prolix .Ve .PP You can also contact the maintainer at the address above or look for information at: .IP "\(bu" 4 AnnoCPAN: Annotated \s-1CPAN\s0 documentation .Sp http://annocpan.org/dist/App\-Prolix/ .IP "\(bu" 4 \&\s-1CPAN\s0 Ratings .Sp http://cpanratings.perl.org/d/App\-Prolix/ .IP "\(bu" 4 \&\s-1RT:\s0 \s-1CPAN\s0's request tracker .Sp http://rt.cpan.org/NoAuth/Bugs.html?Dist=App\-Prolix .IP "\(bu" 4 Search \s-1CPAN\s0 .Sp http://search.cpan.org/dist/App\-Prolix/ .IP "\(bu" 4 Source repository .Sp https://github.com/gaal/app\-prolix .SH "AUTHOR" .IX Header "AUTHOR" Gaal Yahas .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is Copyright (c) 2012 by Google, Inc. .PP This is free software, licensed under: .PP .Vb 1 \& The MIT (X11) License .Ve