07-28-2011
From Bash cookbook:
Useless Use of cat
Certain Unix users take a positively giddy delight in pointing out inefficiencies in
other people's code. Most of the time this is constructive criticism gently given and
gratefully received.
Probably the most common case is the so-called “useless use of cat award” bestowed
when someone does something like cat file | grep foo instead of simply grep foo
file. In this case, cat is unnecessary and incurs some system overhead since it runs in
a subshell. Another common case would be cat file | tr '[A-Z]' '[a-z]' instead of
tr '[A-Z]' '[a-z]' < file. Sometimes using cat can even cause your script to fail (see
Recipe 19.8, “Forgetting That Pipelines Make Subshells”).
But... (you knew that was coming, didn't you?) sometimes unnecessarily using cat
actually does serve a purpose. It might be a placeholder to demonstrate the fragment
of a pipeline, with other commands later replacing it (perhaps even cat -n). Or it
might be that placing the file near the left side of the code draws the eye to it more
clearly than hiding it behind a < on the far right side of the page.
While we applaud efficiency and agree it is a goal to strive for, it isn't as critical as it
once was. We are not advocating carelessness and code-bloat, we're just saying that
processors aren't getting any slower any time soon. So if you like cat, use it.
The good book, btw.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
using grep, i have a file emp.lst, and i want all those records
where "S" or "s" (capital or small) is not there
i used this
grep emp.lst
when i use grep emp.lst
i am getting rows with S..but why negate (^) is not working? (3 Replies)
Discussion started by: soujanya_srk
3 Replies
2. UNIX for Dummies Questions & Answers
I have a file that has the following:
591066 100.0
591066 100.0
591066 100.0
591066 100.0
591066 100.0
591066 100.0
591066 100.0
591066 100.0
591066 100.0
591066 100.0
591066 100.0
... (5 Replies)
Discussion started by: Pablo_beezo
5 Replies
3. Shell Programming and Scripting
<record>
<set>
<termId>1234</termId>
<termType>First</termType>
</set>
<set>
<termId>5678</termId>
<termType>Second</termType>
</set>
</record>
This is saved in record.xml
Hi
I have this sample XML that i am grepping using a shell program.
The objective of the task is - based... (7 Replies)
Discussion started by: revertback
7 Replies
4. Shell Programming and Scripting
The below command is not working
stackmem="$(pmap $1 | grep -i '' | awk '{print $2}'| tr -d ' K')"
I need to grep strictly for ---->
Regards,
Mohtashim (2 Replies)
Discussion started by: mohtashims
2 Replies
5. Shell Programming and Scripting
Hi All
I have a file containing following records:
$HEW_TGT_DB2_USER=hbme_bi2
$prmAttunityUser=ais
$DS_USER=hbme_bi2
$prmStgUser=hbme_bi2
$prmuser=hbme_bi2
$prmStgPass=hbme_bi2
$prmpwd=hbme_bi2
$prmAttunityUser=ais
Say suppose the name of the file is test4.txt
When i fire this... (2 Replies)
Discussion started by: vee_789
2 Replies
6. Shell Programming and Scripting
i have following pattern in file
s6:s2
s2:s4
s1:s2:s3:s4:s5:s6
s1
.
.
Now i want to find occurence of each record in file like s6:s2 occurs twice {once in first record and both occur in 3 record as well}
so output should be
s6:s2 2
s2:s4 2
s1:s2:s3:s4:s5:s6 :1
s1 : 2
... (7 Replies)
Discussion started by: sharad.40216
7 Replies
7. Shell Programming and Scripting
Hi Guys,
I am new to shell scripting. Need help on grep command. I had a file called file.log which contain below statements.
12 Nov 2013 14:12:17,756 INFO security - Userid: raja, Saved File Instance, Name: , Registry:
23 Nov 2013 14:14:11,777 INFO security - Userid: raja, Saved... (7 Replies)
Discussion started by: Vinoth Kumar G
7 Replies
8. UNIX for Dummies Questions & Answers
HI,
I have a command to check a license file.
License_print.
In that file you get the headlines and all different licenses.
Now i want to have things extracted from it.
so i do like following:
license_print | grep -iw -e "user" -e "admin"
But i don´t want all lines where user is... (11 Replies)
Discussion started by: Tzwaj
11 Replies
9. Shell Programming and Scripting
Hello, I have an input file that looks like so:
LDLR
LDLRAD4
VLDLR
when I grep "LDLR" I get an output of:
LDLR
LDLRAD4
VLDLR
Since all names have "LDLR" included within them, but all I want the output to be is
LDLR
I know it can work if I surround the words with pipes for... (5 Replies)
Discussion started by: Rabu
5 Replies
10. UNIX for Dummies Questions & Answers
Hi guys,
Hope someone can help me with this - I'm sure it's fairly simple but it's driving me mad! (forgive the coding - still new on scripting - come from Windows)
I have the following coding for checking whether I want to include a line in a file:-
EXTRACT_Date=$(date --date="${PERIOD}"... (6 Replies)
Discussion started by: NickF
6 Replies
LEARN ABOUT DEBIAN
mail::mbox::messageparser::grep
Mail::Mbox::MessageParser::Grep(3pm) User Contributed Perl Documentation Mail::Mbox::MessageParser::Grep(3pm)
NAME
Mail::Mbox::MessageParser::Grep - A GNU grep-based mbox folder reader
SYNOPSIS
#!/usr/bin/perl
use Mail::Mbox::MessageParser;
my $filename = 'mail/saved-mail';
my $filehandle = new FileHandle($filename);
my $folder_reader =
new Mail::Mbox::MessageParser( {
'file_name' => $filename,
'file_handle' => $filehandle,
'enable_grep' => 1,
} );
die $folder_reader unless ref $folder_reader;
# Any newlines or such before the start of the first email
my $prologue = $folder_reader->prologue;
print $prologue;
# This is the main loop. It's executed once for each email
while(!$folder_reader->end_of_file());
{
my $email = $folder_reader->read_next_email();
print $email;
}
DESCRIPTION
This module implements a GNU grep-based mbox folder reader. It can only be used when GNU grep is installed on the system. Users must not
instantiate this class directly--use Mail::Mbox::MessageParser instead. The base MessageParser module will automatically manage the use of
grep and non-grep implementations.
METHODS AND FUNCTIONS
The following methods and functions are specific to the Mail::Mbox::MessageParser::Grep package. For additional inherited ones, see the
Mail::Mbox::MessageParser documentation.
$ref = new( { 'file_name' => <mailbox file name>, 'file_handle' => <mailbox file handle> });
<file_name> - The full filename of the mailbox
<file_handle> - An opened file handle for the mailbox
The constructor for the class takes two parameters. The file_name parameter is the filename of the mailbox. The file_handle argument is
the opened file handle to the mailbox.
Returns a reference to a Mail::Mbox::MessageParser object, or a string describing the error.
BUGS
No known bugs.
Contact david@coppit.org for bug reports and suggestions.
AUTHOR
David Coppit <david@coppit.org>.
LICENSE
This software is distributed under the terms of the GPL. See the file "LICENSE" for more information.
HISTORY
This code was originally part of the grepmail distribution. See http://grepmail.sf.net/ for previous versions of grepmail which included
early versions of this code.
SEE ALSO
Mail::Mbox::MessageParser
perl v5.10.1 2009-08-09 Mail::Mbox::MessageParser::Grep(3pm)