String search - Command to find second occurance

Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers String search - Command to find second occurance
# 1  
Old 12-06-2007
String search - Command to find second occurance


I am new to Unix world. Is there any command which can directly return the second occurance of a particular string in a file? Basically, I want to read the contents of the file from the second occurance of a particualr string. Can be implemented using a loop, but am just wondering if there is a command which can help me do so.

Please let me know.

# 2  
Old 12-06-2007
You can use awk something like this -
awk '{
          if(index($0, "some string")> 0) {count++}
          if(count>1) { print $0}
        } ' inputfile > outputofsearch

# 3  
Old 12-06-2007
Thanks for your prompt reply. I am not familiar with awk. Is there any alternative method you can think of..
# 4  
Old 12-06-2007
Other than looping or using awk, perl, or python, I have no other idea except an extreme hack like this:


# total line in file
wc -l inputfile | read filelen dummy

# find the line to start reading on
grep -n 'some string' inputfile | head -n 2 | tail -n 1 | read startline dummy

# subtract start line from total 
length=$(( $filelen - $startline ))

# tail the lines you need.
tail -n $length inputfile

If you are running this against a large file it will waste considerable resources.
It wastes resources anyway, because it reads thru the file several times.
# 5  
Old 12-06-2007

Thanks Jim. This really helps. Smilie Let me try it.
# 6  
Old 12-06-2007

Command csplit can help:
#!/usr/bin/env sh

# @(#) s1       Demonstrate splitting a file at second occurrence of string.

set -o nounset


## Use local command version for the commands in this demonstration.

echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version bash csplit


# Remove debris from previous runs.
rm -f xx*


echo " Input file:"
cat -n $FILE

echo " Character counts written to files:"
csplit -k -z $FILE /saurabhsinha23/ {1}

echo " Files created by csplit:"
ls xx*

echo " Results from csplit:"
cat xx02

exit 0

% ./s1

(Versions displayed with local utility "version")
GNU bash 2.05b.0
csplit (coreutils) 5.2.1

 Input file:
     1  First line
     2  many lines can be in the zeroth segment
     3  vanilla lines
     4  this line contains "saurabhsinha23"
     5  another line
     6  yet another line
     7  an additional line
     8  second occurrence of "saurabhsinha23"
     9  more lines
    10  many more lines
    11  third occurrence of "saurabhsinha23"
    12  lines continue
    13  fourth occurrence of "saurabhsinha23"
    14  ...
    15  last occurrence of "saurabhsinha23"
    16  last line

 Character counts written to files:

 Files created by csplit:
xx00  xx01  xx02

 Results from csplit:
second occurrence of "saurabhsinha23"
more lines
many more lines
third occurrence of "saurabhsinha23"
lines continue
fourth occurrence of "saurabhsinha23"
last occurrence of "saurabhsinha23"
last line

See man pages for details ... cheers, drl
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How can I use find command to search string/pattern in a file recursively?

Hi, How can I use find command to search string/pattern in a file recursively? What I tried: find . -type f -exec cat {} | grep "make" \; Output: grep: find: ;: No such file or directory missing argument to `-exec' And this: find . -type f -exec cat {} \; -exec grep "make" {} \;... (12 Replies)
Discussion started by: cola
12 Replies

2. Shell Programming and Scripting

[Need help] perl script to find the occurance of string from a text file

I have two files 1. input.txt 2. keyword.txt input.txt has contents like .src_ref 0 "call.s" 24 first 0x000000 0x5a80 0x0060 BRA.l 0x60 .src_ref 0 "call.s" 30 first 0x000002 0x1bc5 RETI .src_ref 0 "call.s" 31 first 0x000003 0x6840 ... (2 Replies)
Discussion started by: acdc
2 Replies

3. Shell Programming and Scripting

Search several string and convert into a single line for each search string using awk command AIX?.

I need to search the file using strings "Request Type" , " Request Method" , "Response Type" and by using result set find the xml tags and convert into a single line?. below are the scenarios. Cat test Nov 10, 2012 5:17:53 AM INFO: Request Type Line 1.... (5 Replies)
Discussion started by: laknar
5 Replies

4. Shell Programming and Scripting

Search for a pattern in a String file and count the occurance of each pattern

I am trying to search a file for a patterns ERR- in a file and return a count for each of the error reported Input file is a free flowing file without any format example of output ERR-00001=5 .... ERR-01010=10 ..... ERR-99999=10 (4 Replies)
Discussion started by: swayam123
4 Replies

5. Linux

Linux command to find and replace occurance of more than two equal sign with "==" from XML file.

Please help me, wasted hrs:wall:, to find this soulution:- I need a command that will work on file (xml) and replace multiple occurrence (more than 2 times) Examples 1. '===' 2. '====' 3. '=======' should be replaced by just '==' Note :- single character should be replaced. (=... (13 Replies)
Discussion started by: RedRocks!!
13 Replies

6. Shell Programming and Scripting

Search and replace only the first occurance

Hi, I need to search a string and replace with nothing, but only the First occurring string using sed/perl/awk (3 Replies)
Discussion started by: suraj.sheikh
3 Replies

7. Shell Programming and Scripting

Awk - find string, search lines below string for other strings

What's the easiest way to search a file for a specific string and then look for other instances after that? I want to search for all Virtual Hosts and print out the Server Name and Document Root (if it has that info), while discarding the rest of the info. Basically my file looks like this: ...... (6 Replies)
Discussion started by: Mbohmer
6 Replies

8. Shell Programming and Scripting

search and replace the last occurance of a match in a file

HI please let me know if there is any command to search and replace only the last occurence of a string in aline. Eg: " This cat is a cat with a tail longer of all cat." I need to replace only the last "cat" in the above line. thanks (3 Replies)
Discussion started by: harikris614
3 Replies

9. UNIX for Dummies Questions & Answers

search for a word and it's occurance at the output

hey to everybody this is my first post at this forum I need a very immediate answer for this question. If you can, I will be delightfull I have a file called example.txt and I want to seek for the for hello and learn the number of the occurance of hello (2 Replies)
Discussion started by: legendofanatoli
2 Replies

10. UNIX for Dummies Questions & Answers

Unix find command to print directory and search string

Hi i need to print pathname in which the string present using 'find' command sample output like this Pathname String to be searched ---------- -------------------- /usr/test/myfile get /opt/test/somefile get Thanks in... (4 Replies)
Discussion started by: princein
4 Replies
Login or Register to Ask a Question