Need help in search for word and return line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help in search for word and return line
# 1  
Old 04-06-2012
Need help in search for word and return line

Hi,
I have this file format and can't seem to think of a solution. I need your help.

I want to return lines which says "Record" if it's ID > 0

Code:
file.txt
Record 1:
::::::::::::::::::::::
::::::::::::::::::::::
ID               "000001"
::::::::::::::::::::::
::::::::::::::::::::::

Record 2:
::::::::::::::::::::::
::::::::::::::::::::::
ID               "000000"
::::::::::::::::::::::
::::::::::::::::::::::

Record 3:
::::::::::::::::::::::
::::::::::::::::::::::
ID               "000002"
::::::::::::::::::::::
::::::::::::::::::::::

In this case, the output should be
Record 1
Record 3

Note:
::::::::::::::::::::::
:::::::::::::::::::::: is some additional lines of data which i don't care about.

TIA - jak
# 2  
Old 04-06-2012
Code:
sed -r '/^Record|ID/!d' infile | sed -n 'h;n;H;x;s/\n/ /;p' | awk -F: '$2 ~ /[1-9]/{print $1}'

# 3  
Old 04-06-2012
Code:
[root@dist unix]# cat file
Record 1:
::::::::::::::::::::::
::::::::::::::::::::::
ID               "000001"
::::::::::::::::::::::
::::::::::::::::::::::
Record 2:
::::::::::::::::::::::
::::::::::::::::::::::
ID               "000000"
::::::::::::::::::::::
::::::::::::::::::::::
Record 3:
::::::::::::::::::::::
::::::::::::::::::::::
ID               "000002"
::::::::::::::::::::::
::::::::::::::::::::::
Record 4:
::::::::::::::::::::::
::::::::::::::::::::::
ID               "000000"
::::::::::::::::::::::
::::::::::::::::::::::
[root@dist unix]# awk  'BEGIN{FS="[ \n\":]+";RS=""}/Record/{i=1};i&&/ID/{if($4!="000000")print$1,$2;i=0}' file
Record 1
Record 3

# 4  
Old 04-06-2012
That's amazing! .. thanks!
# 5  
Old 04-06-2012
Code:
awk -F: '/^Record/{p=$1}/ID.*[^0]"$/{print p}' infile

*edit* this is incorrect

Last edited by Scrutinizer; 04-07-2012 at 03:32 AM.. Reason: Bit fat bug, thanks radoulov..
This User Gave Thanks to Scrutinizer For This Post:
# 6  
Old 04-06-2012
I would use something like this:

Code:
awk '/^Record/ { 
  s = $0 
  }
/^ID/ && int(substr($NF, 2)) {
  print substr(s, 1, length(s) - 1)
  }' infile

The previous solution will skip IDs with values like "000010".

Last edited by radoulov; 04-06-2012 at 06:17 PM.. Reason: Typo.
This User Gave Thanks to radoulov For This Post:
# 7  
Old 04-06-2012
Quote:
Originally Posted by radoulov
[..]The previous solution will skip IDs with values like "000010".
Opps.. Smilie
Code:
awk -F'[":]' '/^Record/{p=$1}/^ID/ && $2>0{print p}' infile

-or-
Code:
awk -F'[":]' '$47>0{print $1}' RS= infile


Last edited by Scrutinizer; 04-06-2012 at 09:04 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Search for word in huge logfile and need to continue to print few lines from that line til find date

Guys i need an idea for one logic..in shell scripting am struggling with a logic...So the thing is... i need to search for a word in a huge log file and i need to continue to print few more lines from that line and the consecutive line has to end when it finds the line with date..because i know... (1 Reply)
Discussion started by: Prathi
1 Replies

2. Shell Programming and Scripting

Find word in a line and output in which line the word occurs / no. of times it occurred

I have a file: file.txt, which contains the following data in it. This is a file, my name is Karl, what is this process, karl is karl junior, file is a test file, file's name is file.txt My name is not Karl, my name is Karl Joey What is your name? Do you know your name and... (3 Replies)
Discussion started by: anuragpgtgerman
3 Replies

3. Shell Programming and Scripting

Read a File line by line and split into array word by word

Hi All, Hope you guys had a wonderful weekend I have a scenario where in which I have to read a file line by line and check for few words before redirecting to a file I have searched the forum but,either those answers dint work (perhaps because of my wrong under standing of how IFS... (6 Replies)
Discussion started by: Kingcobra
6 Replies

4. Shell Programming and Scripting

search a string in a particular column of file and return the line number of the line

Hi All, Can you please guide me to search a string in a particular column of file and return the line number of the line where it was found using awk. As an example : abc.txt 7000,john,2,1,0,1,6 7001,elen,2,2,0,1,7 7002,sami,2,3,0,1,6 7003,mike,1,4,0,2,1 8001,nike,1,5,0,1,8... (3 Replies)
Discussion started by: arunshankar.c
3 Replies

5. UNIX for Dummies Questions & Answers

Can grep command return word instead of complete line

Hi Is there any way GREP command can return word and not complete line. My file has following data: Hello Everyone I am NitinrajSrivastava Hi Friends Welcome VrajSrivastava I am using grep 'raj' which is returning me complete line.However I want only the word having keyword 'raj'. Required... (11 Replies)
Discussion started by: dashing201
11 Replies

6. Shell Programming and Scripting

Search word in a line and print earlier pattern match

Hi All, I have almost 1000+ files and I want to search specific pattern. Looking forwarded your input. Search for: word1.word2 (Which procedure contain this word, I need procedure name in output. Expected output: procedure test1 procedure test2 procedure test3 procedure test4 ... (7 Replies)
Discussion started by: susau_79
7 Replies

7. Shell Programming and Scripting

Search string and return only the 5th line

I have looked at almost every posting on here regarding, grep, sed, awk, nawk, perl methods to perform this function, but they are just not returning the results I hope to see. Example File: abcdef 123456 ghijkl 7890123 7890123 7890123 7890123 mnopqrs 456789 This is the most... (4 Replies)
Discussion started by: doza22
4 Replies

8. Shell Programming and Scripting

How to search word and get the line above it.

Hey all, Could any one help me ... I want to search the word and want the line above it. eg. mytxt.log My name is Jeevan. 240 is my address. My name is Jhon. 390 is my address. -------- i want to search "240" and want output as My name is Jeevan. 240 is my address. ... (7 Replies)
Discussion started by: Jeevan Salunke
7 Replies

9. UNIX for Dummies Questions & Answers

query on how to search for a line and read 4th word from that line

Assume I have a text file as below: me con pi ind ken pras ur me con rome ind kent pras urs pintu con mys ind pan pras ki con kit ind sys My requirement, I need to search for "con rome" and if exists, then print 4th word from rome, i.e in above example, since "con rome"... (4 Replies)
Discussion started by: jaggesh
4 Replies

10. UNIX for Dummies Questions & Answers

to get a line above the search word

Hi Everyone. I want to get all the lines above the word error. Note some records dont have error. ex Input Rec # 2384 Client: BGA Rx No: 0735845 Error: (W)Submit Date before Fill Date(SUBMIT-DATE) I want to have the line which starts with... (16 Replies)
Discussion started by: sachin.gangadha
16 Replies
Login or Register to Ask a Question