06-15-2011
Quote:
Originally Posted by
Corona688
If you'd posted your data you could have had an answer an hour ago... I'll ignore the personal slur and explain a little more.
grep considers no logic but patterns when matching lines. It doesn't remember anything about previous lines and has no expression to carry information from previous lines across to next ones. The awk language is much better suited, since it deals with lines/patterns and has variables plus logical expressions. (I think sed does too in a fashion, but its expression syntax is rather convoluted. awk gives you straightforward variables with names, and straightforward expressions with if/else.) I'm only asking you for your data. I'm not even the first one.
If you really want I'll give you a ridiculous solution like grep pattern file | tail -n +5 | head -n 1 to get match 4 which is of course a very silly solution and might not work in Solaris. A less silly solution would be nawk '/pattern/ {} NR=2' but you asked for grep, this may not suit your needs, and there may be even more efficient ways to deal with the data depending on what it actually is and what you're trying to do.
You slur...I slur back....that is how that first part went......anyways...
See....you did not need data to answer and there was no problem adding on the excellent commentary/lead about awk. I know a lot of people often ask for the answer to their specific issue and want YOU the other poster to do all the work for them (sometimes very practical). I am still at the general question looking to get more of a clue phase but if you want to do all my work for me let me know...I am certain you can do it fast.
I have something to work with and can make some progress (fingers crossed).
Thank you so much: )
---------- Post updated at 12:09 PM ---------- Previous update was at 12:03 PM ----------
had to change the line for Solaris:
grep pattern file | tail +5 | head -1
I am not working with large files here and performance is not an issue......
The line is easy to use and works in the Bash shell so....why is this a silly solution, performance, crossplatform issues?
thanks again.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi,
I have several files with data that have to be imported to a database. These files contain records with separator characters. Some records are corrupt (2 separators are missing) and I need to correct them prior to importing them into the db.
Example:
... (5 Replies)
Discussion started by: stresing
5 Replies
2. Shell Programming and Scripting
Hi,
I have many scripts in particular directory. And few of the scripts have exit 0 in second line. Now i wanted to list out the scripts name which has the exit 0 in its second line
I tried many options , but i can not get the filename along with the nth line pattern match :mad:. Can anyone... (14 Replies)
Discussion started by: puni
14 Replies
3. UNIX for Dummies Questions & Answers
I have several files (around 50) that have the similar format. I need to extract the 5th line from every file and output that into a text file. So far, I have been able to figure out how to do it for a single file:
$ awk 'NR==5' text1.txt > results.txt
OR
$ sed -n '5p' text1.txt > results.txt... (6 Replies)
Discussion started by: oriqin
6 Replies
4. Shell Programming and Scripting
Please help me how can I display every nth field present in a "|" delimited file.
Ex: If a have a file with data as a|b|c|d|e|f|g|h|k|l|m|n
I want to display every 3rd feild which means the output should be
c
f
k
n
Please help me. (1 Reply)
Discussion started by: ngkumar
1 Replies
5. UNIX for Dummies Questions & Answers
Hi ,
I want to print the nth and n+1 lines from a file once it gets a pattern match.
For eg:
aaa
bbb
ccc
ddd
gh
jjjj
If I find a match for bbb then I need to print bbb as well as 3rd and 4th line from the match.. Please help..Is it possible to get a command using sed :) (6 Replies)
Discussion started by: saj
6 Replies
6. Answers to Frequently Asked Questions
I see lot of request posted in internet to find out the day of nth week in a Month.
example:
what is the date of 3rd Sunday in October
What is the date of 2nd Friday in June 2012
what is the date of 4th Saturday in January 2011..etc..
The below shell script is used to find out the... (1 Reply)
Discussion started by: itkamaraj
1 Replies
7. Shell Programming and Scripting
Hi all,
I'm trying to create a sed command to get the Nth instance of an XML tag in a string, but thus far I can only ever seem to get the last one.
Given an XML string:
<Wrap><GrayLevel>a</GrayLevel><GrayLevel>b</GrayLevel></Wrap>
I tried to do this on the command line to get each... (7 Replies)
Discussion started by: Zel2008
7 Replies
8. Shell Programming and Scripting
Hi All,
I have sample of listing as following
Database 2 entry:
Database alias = PXRES
Database name = PXRES
Local database directory = /db2/data1/db2phnx
Database release level = d.00
Comment ... (3 Replies)
Discussion started by: ckwan
3 Replies
9. Shell Programming and Scripting
I have a situation where a file "config.txt" looks like this
Servername:
OS:
Serername:
OS:
Servername:
OS:
....
....
...
Servername:
OS:
looking for the sed syntax to replace the "Nth" occurrence of Servername (i would apply the same logic to OS as well), want to replace the Nth... (4 Replies)
Discussion started by: alldbest
4 Replies
10. AIX
Please help me
print nth line after match
awk or sed one line command. (3 Replies)
Discussion started by: sushma123
3 Replies
egrep(1) egrep(1)
NAME
egrep - search a file for a pattern using full regular expressions
SYNOPSIS
/usr/bin/egrep [-bchilnsv] [-e pattern_list] [-f file] [strings] [file...]
/usr/xpg4/bin/egrep [-bchilnsvx] [-e pattern_list] [-f file] [strings] [file...]
The egrep (expression grep) utility searches files for a pattern of characters and prints all lines that contain that pattern. egrep uses
full regular expressions (expressions that have string values that use the full set of alphanumeric and special characters) to match the
patterns. It uses a fast deterministic algorithm that sometimes needs exponential space.
If no files are specified, egrep assumes standard input. Normally, each line found is copied to the standard output. The file name is
printed before each line found if there is more than one input file.
/usr/bin/egrep
The /usr/bin/egrep utility accepts full regular expressions as described on the regexp(5) manual page, except for ( and ), ( and ), {
and }, < and >, and
, and with the addition of:
1. A full regular expression followed by + that matches one or more occurrences of the full regular expression.
2. A full regular expression followed by ? that matches 0 or 1 occurrences of the full regular expression.
3. Full regular expressions separated by | or by a NEWLINE that match strings that are matched by any of the expressions.
4. A full regular expression that can be enclosed in parentheses ()for grouping.
Be careful using the characters $, *, [, ^, |, (, ), and in full regular expression, because they are also meaningful to the shell. It is
safest to enclose the entire full regular expression in single quotes '... '.
The order of precedence of operators is [], then *?+, then concatenation, then | and NEWLINE.
/usr/xpg4/bin/egrep
The /usr/xpg4/bin/egrep utility uses the regular expressions described in the EXTENDED REGULAR EXPRESSIONS section of the regex(5) manual
page.
The following options are supported for both /usr/bin/egrep and /usr/xpg4/bin/egrep:
-b Precede each line by the block number on which it was found. This can be useful in locating block numbers by context (first
block is 0).
-c Print only a count of the lines that contain the pattern.
-e pattern_list Search for a pattern_list (full regular expression that begins with a -).
-f file Take the list of full regular expressions from file.
-h Suppress printing of filenames when searching multiple files.
-i Ignore upper/lower case distinction during comparisons.
-l Print the names of files with matching lines once, separated by NEWLINEs. Does not repeat the names of files when the pat-
tern is found more than once.
-n Precede each line by its line number in the file (first line is 1).
-s Work silently, that is, display nothing except error messages. This is useful for checking the error status.
-v Print all lines except those that contain the pattern.
/usr/xpg4/bin/egrep
The following option is supported for /usr/xpg4/bin/egrep only:
-x Consider only input lines that use all characters in the line to match an entire fixed string or regular expression to be matching
lines.
The following operands are supported:
file A path name of a file to be searched for the patterns. If no file operands are specified, the standard input is used.
/usr/bin/egrep
pattern Specify a pattern to be used during the search for input.
/usr/xpg4/bin/egrep
pattern Specify one or more patterns to be used during the search for input. This operand is treated as if it were specified as
-epattern_list.
USAGE
See largefile(5) for the description of the behavior of egrep when encountering files greater than or equal to 2 Gbyte ( 2**31 bytes).
See environ(5) for descriptions of the following environment variables that affect the execution of egrep: LC_COLLATE, LC_CTYPE, LC_MES-
SAGES, and NLSPATH.
The following exit values are returned:
0 If any matches are found.
1 If no matches are found.
2 For syntax errors or inaccessible files (even if matches were found).
See attributes(5) for descriptions of the following attributes:
/usr/bin/egrep
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
|CSI |Not Enabled |
+-----------------------------+-----------------------------+
/usr/xpg4/bin/egrep
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWxcu4 |
+-----------------------------+-----------------------------+
|CSI |Enabled |
+-----------------------------+-----------------------------+
fgrep(1), grep(1), sed(1), sh(1), attributes(5), environ(5), largefile(5), regex(5), regexp(5), XPG4(5)
Ideally there should be only one grep command, but there is not a single algorithm that spans a wide enough range of space-time tradeoffs.
Lines are limited only by the size of the available virtual memory.
/usr/xpg4/bin/egrep
The /usr/xpg4/bin/egrep utility is identical to /usr/xpg4/bin/grep -E (see grep(1)). Portable applications should use /usr/xpg4/bin/grep
-E.
23 May 2005 egrep(1)