Sponsored Content
Full Discussion: Problem with egrep and cat
Top Forums Shell Programming and Scripting Problem with egrep and cat Post 302799637 by Don Cragun on Friday 26th of April 2013 11:48:44 PM
Old 04-27-2013
Assuming that you want to add the pathname because you want to process multiple files, you could try something like:
Code:
#!/bin/ksh
# Usage: testscript pathname...
for file in "$@"
do      strings "$file" | while IFS="" read -r line
        do      printf "%s: %s\n" "$file" "$line"
        done
done | egrep -i --color -f 1.txt

However, this may give you a lot of extraneous output if any of the EREs in 1.txt match any of the pathnames of the files being processed.

Note that I got rid of the cat you were using. The strings utility accepts a pathname operand and adding extra commands in a pipeline wastes system resources. Also note that if you try to feed multiple files into a singe invocation of strings (whether by giving strings multiple file operands or by using cat to feed data to strings) there is no way to add a filename to the line being processed after string has processed the input if it is given multiple input files in a single invocation.

If the filenames are matched by something in 1.txt, you could create a similar script that adds the filename to the start of each line output by the egrep command, but it will take more system resources to get the results.

If is also possible to write this script as a 1-liner, but I much prefer readable over producing the minimum number of characters/lines needed to get a job done.

PS I use the Korn shell, but this script will work with any shell that recognizes basic Bourne shell syntax.

Last edited by Don Cragun; 04-27-2013 at 12:51 AM.. Reason: add comment on shell choice
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Problem with cat

On Solaris 5.8 in ksh, I have a sample.txt with contents A 105 305 B 205 405 C 100 198 ....................... when I do a cat sample.txt the O/P is exactly as above but when I do a echo `cat sample.txt` the O/P changes to A 105 305 B 205 405 C 100 198........... Everything is... (3 Replies)
Discussion started by: macrulez
3 Replies

2. Shell Programming and Scripting

cat problem

Hello again; I have a file in this format ./this is/first/1 ./this is/second/2 ./this is/third/3 and i am using this file in a for loop with cat command like this for i in `cat directory.txt` do .......... done Bu there is a problem because my directory is "this is" but... (7 Replies)
Discussion started by: redbeard_06
7 Replies

3. Shell Programming and Scripting

egrep understanding problem

Hi, Can anyone please let me know the meaning of this line,i am not able to understand the egrep part(egrep '^{1,2}).This will search for this combination in beginning but what does the values in {}signifies here. /bin/echo $WhenToRun | egrep '^{1,2}:$' >/dev/null (1 Reply)
Discussion started by: namishtiwari
1 Replies

4. Shell Programming and Scripting

egrep problem | printing next line?????

Hi !!! Dear People, Please help me with the following problem. consider this output: Top 5 Timed Events ~~~~~~~~~~~~ Total Event Waits Time (s) Ela Time ---------------------------- ------------ ----------- ----- CPU time ... (3 Replies)
Discussion started by: user__user3110
3 Replies

5. Shell Programming and Scripting

egrep problem

Hello Experts, I am trying to parse a gz file like this gzip -cd filename | xargs egrep -h -e '.*somepattern</TAG>' | grep -c '<TAG2>`date '+%Y-%m-%d'`</TAG2>' But I am getting an error : egrep cant open. Any ideas fellas? (1 Reply)
Discussion started by: King Nothing
1 Replies

6. Shell Programming and Scripting

Problem using egrep: spaces and newline

Hello: I am working in bash and am a newbie. I want to eliminate spaces from strings. Since this is a basic operation, I searched online and implemented the suggestions; however, I am facing a problem here. I have an input file which looks like this: abc defghi jklmno pqrs tuvw xyzabcd... (8 Replies)
Discussion started by: andyu11
8 Replies

7. Shell Programming and Scripting

Formatting problem with cat, egrep and perl

Hi guys I'm using the following script to change input file format to another format. some where I'm getting the error. Could you please let me know if you find out? cat input.txt|egrep -v ‘^#'|\ perl -ane ‘if (@F>3){$_=~/(chr.+):(\d+)\ s()/;print $1,”\t”,$2,”\t”,($2+35),”\n”}'\ > output.bed ... (1 Reply)
Discussion started by: repinementer
1 Replies

8. Shell Programming and Scripting

Problem with cat

I am trying to use the following code: cat *.txt > OutPutFile.txt Using files with a expression in one single line that always end with " ; " something like this: Block1.txt Block2.txt Block3.txt The expected result should be something like this: OutPutFile.txt: My code works OK in this... (4 Replies)
Discussion started by: Xterra
4 Replies

9. UNIX for Dummies Questions & Answers

Problem pattern redundancy with egrep

%%%%% (2 Replies)
Discussion started by: lucasvs
2 Replies

10. UNIX for Dummies Questions & Answers

Egrep problem

Hi everyone, Can someone look this over? find /oracle/diag/rdbms/*/*/trace -type f -name '*d00*.trc' -mtime 0 \ -exec egrep -c 'TNS-12535: TNS:operation timed out' '{}' '+' | awk -F: '{print $1}' | egrep -c '2015-01-22' usidp/trace/abcdef_d001_21751.trc:9 \... (1 Reply)
Discussion started by: bdby
1 Replies
grep(1) 						      General Commands Manual							   grep(1)

NAME
grep, egrep, fgrep - search a file for a pattern SYNOPSIS
Plain call with pattern pattern [file ...] Call with (multiple) -e pattern pattern] ... [file ...] Call with -f file pattern_file] [file ...] Obsolescent: [expression] [file ...] [strings] [file ...] DESCRIPTION
The command searches the input text files (standard input default) for lines matching a pattern. Normally, each line found is copied to the standard output. supports the Basic Regular Expression syntax (see regexp(5)). The option supports Extended Regular Expression (ERE) syntax (see regexp(5)). The option searches for fixed strings using the fast Boyer-Moore string searching algorithm. The and options treat newlines embedded in the pattern as alternation characters. A null expression or string matches every line. The forms and are maintained for backward compatibility. The use of the and options is recommended for portability. Options Extended regular expressions. Each pattern specified is a sequence of one or more EREs. The EREs can be separated by newline characters or given in separate expression options. A pattern matches an input line if any ERE in the sequence matches the contents of the input line without its trailing newline character. The same functionality is obtained by using Fixed strings. Each pattern specified is a sequence of one or more strings. Strings can be separated by newline characters or given in separate expression options. A pattern matches an input line if the line contains any of the strings in the sequence. The same functionality is obtained by using Each line is preceded by the block number on which it was found. This is useful in locating disk block numbers by context. Block numbers are calculated by dividing by 512 the number of bytes that have been read from the file and rounding down the result. Only a count of matching lines is printed. Same as a simple expression argument, but useful when the expression begins with a hyphen Multiple options can be used to specify multiple patterns; an input line is selected if it matches any of the specified patterns. The regular expression and or strings list is taken from the pattern_file. Suppress printing of filenames when searching multiple files. Ignore uppercase/lowercase distinctions during comparisons. Only the names of files with matching lines are listed (once), separated by newlines. If standard input is searched, a path name of will be written, in the POSIX locale. In other locales, may be replaced by something more appropriate in those locales. Each line is preceded by its relative line number in the file starting at 1. The line number is reset for each file searched. This option is ignored if or is specified. (Quiet) Do not write anything to the standard output, regardless of matching lines. Exit with zero status upon finding the first matching line. Overrides any options that would produce output. Error messages produced for nonexistent or unreadable files are suppressed. All lines but those matching are printed. Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or pre- ceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore. (eXact) Matches are recognized only when the entire input line matches the fixed string or regular expression. The file name is output in all the cases in which output is generated if there are more than one input file, unless the -h option is speci- fied. Care should be taken when using the characters and in expression, because they are also meaningful to the shell. It is safest to enclose the entire expression argument in single quotes EXTERNAL INFLUENCES
Environment Variables determines the locale to use for the locale categories when both and the corresponding environment variable (beginning with do not specify a locale. If is not specified or is set to the empty string, a default of (see lang(5)) is used. determines the locale to use to override any values for locale categories specified by the settings of or any environment variables begin- ning with determines the collating sequence used in evaluating regular expressions. determines the interpretation of text as single byte and/or multi-byte characters, the classification of characters as letters, the case information for the option, and the characters matched by character class expressions in regular expressions. determines the language in which messages are displayed. If any internationalization variable contains an invalid setting, the commands behave as if all internationalization variables are set to See environ(5). International Code Set Support Single-byte and multi-byte character code sets are supported. RETURN VALUE
Upon completion, returns one of the following values: One or more matches found. No match found. Syntax error or inaccessible file (even if matches were found). EXAMPLES
In the POSIX shell (sh(1)) the following example searches two files, finding all lines containing occurrences of any of four strings: Note that the single quotes are necessary to tell when the strings have ended and the file names have begun. For the C shell (see csh(1)) the following command can be used: To search a file named containing the following entries: the command: prints: To search a file for lines that contain either a or use either of the following commands: Search all files in the current directory for the string Search all files in the current directory subtree for the string and ensure that no error occurs due to file name expansion exceeding sys- tem argument list limits: The previous example does not print the name of files where string appears. To force to print file names, add a second argument to the command portion of the command line: In this form, the first file name is that produced by and the second file name is the null file. WARNINGS
(XPG4 only.) If the option is specified, the exit status will be zero if an input line is selected, even if an error was detected. Other- wise, default actions will be performed. If the option is specified with non-word constituent characters, then the output is unexpected. SEE ALSO
sed(1), sh(1), regcomp(3C), environ(5), lang(5), regexp(5). STANDARDS CONFORMANCE
grep(1)
All times are GMT -4. The time now is 03:09 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy