Sponsored Content
Top Forums Shell Programming and Scripting Still trying to get a grep -c that works Post 302188044 by era on Tuesday 22nd of April 2008 02:14:29 PM
Old 04-22-2008
You still want to drop the eval. Trust me on this, it's not doing anything useful.

Save the matches to a hash and print it only at the end. One of the earlier threads where you asked about this had a solution which did that.

Code:
foreach $pattern (<FILE1a>) {
  chomp($pattern);
  last if $pattern =~ /^\s*$/;
  my $matches = grep $pattern eq $_, @strings;
  ++$count{$pattern} if $matches;
}

for my $key (keys %count) {
  print "$count{$key} $key\n";
}

You need to declare %count up at the top if you use strict (which you should). Also the initialization before the for loop can stay as before. The endless while loop I don't understand; what's that for? Also you should probably close your files when you're done with them, especially if this is going to be a subroutine in a bigger program.
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How the for loop works?

Hi, I have a landing area where some files keep on coming after irregular intervals of time. From this landing area, I need to move files to another directory for processing. For this, I am using a for loop to find certain kinds of files in the landing area. Now my question is, suppose I start... (6 Replies)
Discussion started by: neelaksh
6 Replies

2. UNIX for Dummies Questions & Answers

How ls | wc -l works?

ls displays files in tabbed output. Say a directory contains 3 files. ls will list all 3 in one line. So, I expect ls | wc -l to give 1, but it counts the nr of files and gives 3. Can someone explain how this works? (3 Replies)
Discussion started by: krishmaths
3 Replies

3. Programming

how this works?

pls explain me how this works.... DECODE (SUBSTR (field, 1, 1),'''', '''''' || field || '''','''' || field || '''') here field is a column in an oracle table.... (7 Replies)
Discussion started by: vijay_0209
7 Replies

4. UNIX for Dummies Questions & Answers

>./a.pl works, >a.pl - does not

When I try to execute script, I get message: >aa.pl zsh: command not found: aa.pl but >./aa.pl works OK. What to change in environment to force the former way to work? Thank you, Alex Z (4 Replies)
Discussion started by: zzol
4 Replies

5. Shell Programming and Scripting

how it works ? sftp

Hi, I am curious about this script , how it is running ..? #!/bin/sh echo "OK, starting now..." ftp remotehost <<EOF When I run , it is asking OK, starting now... Password:Name (remotehost): SHould I enter only password ? and explain me how it works.. thanks in advance.. (3 Replies)
Discussion started by: hegdeshashi
3 Replies

6. UNIX for Advanced & Expert Users

How this works?

I have a program............ #include<stdio.h> #include<unistd.h> main() { if(fork == 0) { printf("Hi every body:p!!!!!!!!!!"); } } This program works with out any error. here fork is not a system call. It just act as a variable.But how it works without declaring it? What data type it... (19 Replies)
Discussion started by: carolsanjeevi
19 Replies

7. UNIX for Dummies Questions & Answers

Need a visual grep tool that works on windows via sftp

Hi, Could you please suggest a tool that connects like WINSCP/Putty and allows me to search a remote Unix directory for a certain text pattern (grep) ? Regards, Bhanja. (1 Reply)
Discussion started by: bhanja_trinanja
1 Replies

8. Shell Programming and Scripting

Inconsistent `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l`

i have this line of code that looks for the same file if it is currently running and returns the count. `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l` basically it is assigned to a variable ISRUNNING=`ps -eaf -o args | grep -i sfs_pcard_load_file.ksh |... (6 Replies)
Discussion started by: wtolentino
6 Replies

9. Shell Programming and Scripting

Grep works on Linux but fails on Solaris

Hi, On linux i have the below command working fine. grep -o '<name>.*</name>' deploy.tmp | sed 's/\(<name>\|<\/name>\)//g' deploy.tmp But the same is failing on Solaris uname -a SunOS mymac 5.10 Generic_150400-23 sun4v sparc sun4v Can you tell me how can i get it work on Solaris ?... (6 Replies)
Discussion started by: mohtashims
6 Replies

10. Shell Programming and Scripting

Grep -q not works with multiples grep in same line

Hi, I'm trying to make a grep to see if exists occurrences with a sentence like these: grep -qi "message" file0 | grep -i $date | grep -vi "exception" echo $? 1 If I execute without -q modifier I can find occurrences. Someone could help me please? Thanks and sorry for my English! (1 Reply)
Discussion started by: mierdatuti
1 Replies
MATCH(1L)						      Schily's USER COMMANDS							 MATCH(1L)

NAME
match - searches for patterns in files SYNOPSIS
match [ -option ] pattern [ file ... ] DESCRIPTION
Match searches the named files or standard input (if no filenames are given) for the occurrences of the given pattern on each line. The program accepts literal characters or special pattern matching characters. All lines that match the pattern are output on standard output. You can only specify one pattern string for each match, however, you can construct an arbitrarily complex string. When you do not specify a file, match can be used as a filter to display desired lines. Standard in is used if no files are specified. OPTIONS
-not, -v Prints all lines that do not match. -i Ignore the case of letters -m Force not to use the magic mode -w Search for pattern as a word -x Display only those lines which match exactly -c Display matching count for each file -l Display name of each file which matches -s Be silent indicate match in exit code -h Do not display filenames -n Precede matching lines with line number (with respect to the input file) -b Precede matching lines with block number REGULAR EXPRESSIONS
The following is a table of all the pattern matching characters: c An ordinary character (not one of the special characters discussed below) is a one character regular expression that matches that character. c A backslash () followed by any special character is a one character regular expression that matches the special character itself. The special characters are: ! # % * { } [ ] ? ^ $ ! Logical OR as in match this!that!the_other. You may have to use `{}' for precedence grouping. # A hash mark followed by any regular expression matches any number (including zero) occurrences of the regular expression. ? Matches exactly any one character. W? matches Wa, Wb, Wc, W1, W2, W3 ... * Matches any number of any character. % Matches exactly nothing. It can be used in groups of ored patterns to specify that an empty alternative is possible. {} Curly brackets may be used to enclose patterns to specify a precedence grouping, and may be nested. {%!{test}}version matches the strings testversion and version. [string] A non empty string of characters enclosed in square brackets is a one character regular expression that matches any one character in that string. If however the first character of the string is a circumflex (^), the one character expression matches any character which is not in the string. The ^ has this special meaning only if it occurs first in the string. The minus (-) may be used to indi- cate a range of consecutive ASCII characters; for example, [0-9] is equivalent to any one of the digits. The - loses it's special meaning if it occurs first (after an initial ^, if any) or last in the string. The right square bracket (]) and the backslash () must be quoted with a backslash if you want to use it within the string. ^ Matches the beginning of a line. $ Matches the end of a line. (^*$ matches any entire line) EXAMPLES
FILES
None. SEE ALSO
grep(1), fgrep(1), egrep(1) DIAGNOSTICS
NOTES
Even if a match occurs more than once per line, the line is output only once. Quote special pattern matching characters to prevent them from being expanded by the Command Interpreter. BUGS
The length of the pattern is currently limited to 100 characters. This limit is reduced by 38 if the -w option is used. Joerg Schilling 15. Juli 1988 MATCH(1L)
All times are GMT -4. The time now is 05:53 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy