lf
lf is a lightweight command-line LTSV processor.
Installation
Install it yourself as:
$ gem install lf
Usage
$ lf -h
Usage: lf [options] <filters ...> [file]
-r, --require FILE Require a file
-c, --[no-]color Colored output
-f, --format FORMAT Choose a format(ltsv, table)
-b, --[no-]buffered Flush the output after each LTSV row
-h, --help Show this message
-v, --version Show version
Input
Specify LTSV file path:
$ lf example.ltsv
Or input via pipe:
$ tail -f example.ltsv | lf
Filters
You can set filters to lf: filter-name:args
$ lf label:tag1,foo example.ltsv
tag1:test foo:bar
$ lf label:tag1 example.ltsv
tag1:test
Label filter
label:select labels(comma separated)
$ lf label:tag1,foo example.ltsv
tag1:test foo:bar
tag1:test foo:baz
$ lf label:tag1 example.ltsv
tag1:test
tag1:test
Ignore filter
ignore:ignore labels(comma separated)
$ lf ignore:tag1 example.ltsv
foo:bar test:key long:long long long message long long long label:short
foo:baz test:key long:long long long message long long long label:short
Equal filter
equal:label:value
$ lf eq:foo:bar example.ltsv
tag1:test foo:bar test:key long:long long long message long long long label:short
Regexp filter
regexp:label:regexp
$ lf reg:foo:r$ example.ltsv
tag1:test foo:bar test:key long:long long long message long long long label:short
Customu filter
Make your custom filters:
# custom-filter.rb
class StatusCode < Lf::Filter
filter_alias :status
def initialize(status_code)
@status_code = status_code.to_i
end
def apply(row)
row[:status].to_i == @status_code ? row : nil
end
end
$ lf --require custom-filter.rb status:200 nginx.log
Contributing
- Fork it ( https://github.com/rosylilly/lf/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request