Dynamically accept search pattern and display lines based on it


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Dynamically accept search pattern and display lines based on it
# 1  
Old 03-07-2013
Dynamically accept search pattern and display lines based on it

I have a output file which contains n number of document.Each document has n number of segments and identified using below points

The starting segment is ISA and Ending segment is IEA
Each document has unique number and it will be passed in REF*D9 segment

Each line in sample file is called segment and each segment is group of field delimited with (*)

Since i cant paste the entire contents i have attached the sample file.

Refer the sample file for exact file structure.

If i need to display particular segment from large sample file
Code:
For eg N3 segment which is under NM1*85 segments for following documents alone

12000000010
12000000011
12000000012
12000000013
12000000014
12000000015
12000000016
12000000017

I used the following commands

Code:
1.awk 'a-->0;/NM1\*85/{a=1}/REF\*D9/' file > file1
2.nawk '{s=s?s"\t"$0:$0}/REF/{print s;s=""}' file1|sed -n '/12000000010/,/12000000017/p'

if i need N4 segment which is under NM1*85 segment for same set of documents then i use
Code:
3.awk 'a-->0;/NM1\*85/{a=2}/REF\*D9/' file|egrep -v "N3" > file2
4.nawk '{s=s?s"\t"$0:$0}/REF/{print s;s=""}' file2|sed -n '/12000000010/,/12000000017/p'

so for each and every segment i need to type the command again and store the output in seperate file

Code:
So I need something user interactive

i.e it should prompt 
for search pattern and no of lines to be displayed after that pattern as i mentioned in 1st command
for segment to be omitted as i mentioned in 3rd command(egrep)
and also for start and end document no. as i mentioned in 4rd command(sed)
all these validation need to be done in tmp file or something
and as soon i provided start and end document no it should display the output

I am novice to unix i got this idea if anybody can come up with better logic that will handle my requirement
it would be appreciable

Code:
OS - SunOS viper 5.9 Generic_117171-07 sun4u sparc SUNW,Sun-Fire-480R
Shell - csh

# 2  
Old 03-07-2013
A shell loop can ask for the pattern, capture matching lines in a temp file, count the lines at the same time, and if any lines, turn you over to vi, pg, less in the temp file to view and play in the subset. When you exit the viewer, it asks you if you want to view again, and if not, loops. You can make any copies you want from inside the viewer.

Now, only a select few actually prefer the csh. The bash and ksh93 are much nicer and there are more experts to help.

PS: I use the ksh/bash 'set -o vi' option to do command recall, so I do not type commands over and over. I never even leave my home dir except inside (...) so I return automatically. It makes the history more valuable. I also save the history file occasionally where my tools can find it, and set a huge HISTSIZE of 32767. I consider one of the best CUI's.

Last edited by DGPickett; 03-07-2013 at 02:46 PM..
# 3  
Old 03-08-2013
Code:
ok i will be happy if i get the solution based on any shell

# 4  
Old 03-08-2013
In bash, something like this? File names go on command line.
Code:
#!/bin/bash
 
ans=y
 
while [[ "$ans" == '[Yy]*' ]]
 do
  echo "Enter pattern: \c"
  read ptn
  echo 'Searching . . . \c'
  lc=$( grep -E "$ptn" "$@" | tee /tmp/patgrep.$$ | wc -l )
  echo "$lc lines found."
 
  if [ $lc != 0 ]
   then
    sleep 6
    vi /tmp/patgrep.$$
   fi
 
  echo 'Another (y/n)? \c'
  read ans
 done

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep pattern and display all lines below

Hi I need to grep for a patter and display all lines below the pattern. For ex: say my file has the below lines file1 file2 file3 file4 file5 I NEED to grep for patter file3 and display all lines below the pattern. do we have an option to get this data. Let me know if you require... (5 Replies)
Discussion started by: venkidhadha
5 Replies

2. Shell Programming and Scripting

Search pattern on logfile and search for day/dates and skip duplicate lines if any

Hi, I've written a script to search for an Oracle ORA- error on a log file, print that line and the .trc file associated with it as well as the dateline of when I assumed the error occured. In most it is the first dateline previous to the error. Unfortunately, this is not a fool proof script.... (2 Replies)
Discussion started by: newbie_01
2 Replies

3. Shell Programming and Scripting

Display 2 lines before and after a particular pattern

Hi team, Is it possible to display 2 lines after a particular pattern in a shell script. For example in a file which has the below contents. Mummy Daddy Son Daughter Children Aunty Uncle Grandma Grandpa Son Father Mother Brother-in-law I want to display 2 lines before and after... (1 Reply)
Discussion started by: balamv
1 Replies

4. UNIX for Dummies Questions & Answers

Updating value based on search pattern

I have a file with following data <Field FieldName="CHCFA21_01_01" FieldType="Text"> <Output CapturedValue=""> <DataSource Name="" Value="" /> </Output> </Field> <Field FieldName="CHCFA21_01_02" FieldType="Date"> <Output CapturedValue=""> ... (1 Reply)
Discussion started by: nsuresh316
1 Replies

5. Shell Programming and Scripting

Need one liner to search pattern and print everything expect 6 lines from where pattern match made

i need to search for a pattern from a big file and print everything expect the next 6 lines from where the pattern match was made. (8 Replies)
Discussion started by: chidori
8 Replies

6. Shell Programming and Scripting

Extracting few lines from a file based on identifiers dynamically

i have something like this in a file called mysqldump.sql -- -- Table structure for table `Table11` -- DROP TABLE IF EXISTS `Table11`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `Table11` ( `id` int(11) NOT NULL... (14 Replies)
Discussion started by: vivek d r
14 Replies

7. Shell Programming and Scripting

Search and replace - pattern-based

Hey folks! I am new to shell-scripting, but I have a problem that I would like to solve using a script. I create very large html forms, used for randomized trials. In these forms, each question is supplied with a variable that looks something like this: PROJECT_formNN Where NN is the question... (1 Reply)
Discussion started by: Roevhat
1 Replies

8. Shell Programming and Scripting

Print a pattern between the xml tags based on a search pattern

Hi all, I am trying to extract the values ( text between the xml tags) based on the Order Number. here is the sample input <?xml version="1.0" encoding="UTF-8"?> <NJCustomer> <Header> <MessageIdentifier>Y504173382</MessageIdentifier> ... (13 Replies)
Discussion started by: oky
13 Replies

9. Shell Programming and Scripting

Pattern matching in file and then display 10 lines above every time

hiii, i have to write a shell script like this---- i have a huge log file name abc.log .i have to search for a pattern name "pattern",it may occur 1000 times in the log file,every time it finds the pattern it should display the 10 lines above the pattern. I appericiate your help. (30 Replies)
Discussion started by: namishtiwari
30 Replies

10. Shell Programming and Scripting

Search file for pattern and grab some lines before pattern

I want to search a file for a string and then if the string is found I need the line that the string is on - but also the previous two lines from the file (that the pattern will not be found in) This is on solaris Can you help? (2 Replies)
Discussion started by: frustrated1
2 Replies
Login or Register to Ask a Question