NAME
prefixcat - Like Unix `cat` but by default prefix each line with filename
VERSION
This document describes version 0.002 of prefixcat (from Perl distribution App-prefixcat), released on 2024-08-11.
SYNOPSIS
% prefixcat [OPTION]... [FILE]...
See examples in "EXAMPLES".
DESCRIPTION
This utility is like the Unix cat command but by default it prefixes each output line with filename. I wrote this utility because this feature is surprisingly absent in cat
and rather cumbersome to accomplish using the traditional Unix toolbox. [1] The simplest is using grep '.*' FILE...
but it highlights the lines by default.
prefixcat offers a few options. You can choose the string to print to separate the filename prefix and the output line (-s
). You can format the filename using a sprintf()
template (-f
). And for maximum flexibility you can specify a Perl code to do the formatting.
EXIT CODES
0 on success.
255 on I/O error.
99 on command-line options error.
OPTIONS
--separator, -s
String, default
:
. The text used to separate the prefix (filename) and the input line.--format, -f
String, default
%s
.sprintf()
template used to print the prefix (filename).--eval, -e
If specified, will print the result of Perl code for each line of input. Code will get the content of line (including the newline) in
$_
. It should return the output line to be printed, or if it returnsundef
, the content of$_
will be used as the output line.Additionally,
$main::filename
will be set to the current input filename,$main::filenum
to the current index of input files (1-based), and$main::linenum
to the current input line (1-based).Overrides "--separator, -s" and "--format, -f".
FAQ
EXAMPLES
Print filename
% prefixcat f1.txt f2.txt
Sample output:
f1.txt:line 1
f1.txt:line 2
f1.txt:line 3
f2.txt:line 1
f2.txt:line 2
Print line number as well
% prefixcat -e '"$filename:$linenum:$_"' f1.txt f2.txt
Sample output:
f1.txt:1:line 1
f1.txt:2:line 2
f1.txt:3:line 3
f2.txt:1:line 1
f2.txt:2:line 2
Filter lines (skip blank lines)
% prefixcat -e '/\S/ ? "$filename:$linenum:$_" : ""' f1.txt f2.txt
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/App-prefixcat.
SOURCE
Source repository is at https://github.com/perlancar/perl-App-prefixcat.
SEE ALSO
cat Unix command
AUTHOR
perlancar <perlancar@cpan.org>
CONTRIBUTING
To contribute, you can send patches by email/via RT, or send pull requests on GitHub.
Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:
% prove -l
If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.
COPYRIGHT AND LICENSE
This software is copyright (c) 2024 by perlancar <perlancar@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=App-prefixcat
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.