Using awk to isolate specific rows


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using awk to isolate specific rows
# 8  
Old 10-08-2011
You were close.

Code:
y = yousefi

Here yousefi is just another uninitialized variable though,
you'll need:

Code:
y = "yousefi"

Note the quotes. In the later example "yousefi" is the string yousefi,
in the former - it's an identifier (a variable name).

Regarding this part:

Code:
/"Yousefi.*$"/

If your input file looks like this:

Code:
AU Yousefi, Ramin

This should be sufficient:

Code:
/Yousefi/ && y = "yousefi"

This should work:

Code:
gawk '{
  /Yousefi/ && y = "yousefi"
  r = r ? r RS $0 : $0
  }
/^ER/ && y {     # check if the previous record 
  print r > y    # contains yousefi
  r = y = x      # reset the flag: set both r and y to NULL 
  }' savedrecs.txt savedrecs2.txt

This User Gave Thanks to radoulov For This Post:
# 9  
Old 10-08-2011
I think it just merged both savedrecs files together into the file yousefi..
# 10  
Old 10-08-2011
Edit: See comments below.

Are you sure you've used the last version?
This one:

Code:
gawk '{
  /Yousefi/ && y = "yousefi"
  r = r ? r RS $0 : $0
  }
/^ER/ && y {   
  print r > y  
  r = y = x    
  }' savedrecs.txt savedrecs2.txt


Last edited by radoulov; 10-08-2011 at 06:53 AM..
This User Gave Thanks to radoulov For This Post:
# 11  
Old 10-08-2011
Yes,
sorry, we need to reset y at every ER Smilie

Code:
gawk '{     
  /Yousefi/ && y = "yousefi"
  r = r ? r RS $0 : $0
  }
/^ER/ {     
  if (y) print r > y    
  r = y = x      
  }' infile

This User Gave Thanks to radoulov For This Post:
# 12  
Old 10-08-2011
Now the first article belongs to Mr Yousefi but the sequential ones are as though it was appended from the contents of both input files..

Hey thanks again for helping me.. I added the input file just in case you needed to tinker..
# 13  
Old 10-08-2011
It seems correct to me: it prints all the blocks/logical records that contain the string Yousefi.
Anyway, given the real input file, the task is much easier Smilie

Code:
awk '/Yousefi/ { print > "Yousefi" }' RS= ORS='\n\n' savedrecs.txt

If you need something different, please post an example of the desired output based on the posted input.
This User Gave Thanks to radoulov For This Post:
# 14  
Old 10-09-2011
Quote:
Originally Posted by sidiqmk
Now the first article belongs to Mr Yousefi but the sequential ones are as though it was appended from the contents of both input files..
What exactly do you want to do with the second input file savedrecs2.txt?
This User Gave Thanks to radoulov For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

extract rows that have a specific name

Hi I want to extract rows in a large files that have a specific name. The name can be "starved and rich", "rich", "starved" or " ". Heres an example: bob starved and rich jack rich joey starved mike so it can have either 3 names or no name. I want to put the names into a... (4 Replies)
Discussion started by: phil_heath
4 Replies

2. Shell Programming and Scripting

Grep to isolate a text file line and Awk to select a word?

I am looking at using grep to locate the line in the text file and them use awk to select a word or words out of it. I know awk needs -v to allow a variable to be used, but also needs -F to allow the break up of the sentence and allow the location of separate variables. $line = grep "1:" File |... (8 Replies)
Discussion started by: Ironguru
8 Replies

3. Shell Programming and Scripting

Cutting rows at specific length

Hi, i have a file containing nrows and 3cols. i want to cut it in specific length and save output to individual files. 1 2 3 4 5 6 5 8 9 10 11 12 13 14 15 16 17 18 i need to cut the file say every 2 rows and save it in individual file. 01.dat contains 1 2 3 4 5 6 02.dat 7 8 9... (10 Replies)
Discussion started by: ida1215
10 Replies

4. Shell Programming and Scripting

Extracting specific rows

Hi all..... I have a file which contains large data...like I want to print the rows starting from "pixel" till the file read the letter "TER" into a new output file.... can anyone plz help in doing this ?? (5 Replies)
Discussion started by: CAch
5 Replies

5. UNIX for Dummies Questions & Answers

extract specific rows

Hi I have a file that looks like the one below. For the same 'TCONS' in the second column, I would like to extract the row that has the highest (or last) number in the fourth column. Any kind of help will be appreciated. input transcript_id "TCONS_00000051"; exon_number "1"; transcript_id... (4 Replies)
Discussion started by: jdhahbi
4 Replies

6. Shell Programming and Scripting

Counting rows line by line from a specific column using Awk

Dear UNIX community, I would like to to count characters from a specific row and have them displayed line-by-line. I have a file called testAwk2.csv which contain the following data: rabbit penguin goat giraffe emu ostrich I would like to count in the middle row individually... (4 Replies)
Discussion started by: vnayak
4 Replies

7. Shell Programming and Scripting

awk: isolate a part of a file name

hi there, i have a file named 'x20080613_x20100106.pwr1.gc', i want to isolate the part 'x20080613_x20100106' but by using the following line i isolate the part '.pwr1.gc': `awk '$0=substr($0, length($0)-7)' $temp` how can i reverse that? thank you! (3 Replies)
Discussion started by: friend
3 Replies

8. Shell Programming and Scripting

Deleting of Specific Rows.

Fruit : Price : Quantity apple : 20 : 40 chiku : 40 :30 Hey guys, i have written a code using sed to delete a specific char which is being typed in. But the problem i am having is , how can i expand my coding to actually allow it do delete the whole row. For example,... (21 Replies)
Discussion started by: gregarion
21 Replies

9. Shell Programming and Scripting

Deleting specific rows in large files having rows greater than 100000

Hi Guys, I need help in modifying a large text file containing more than 1-2 lakh rows of data using unix commands. I am quite new to the unix language the text file contains data in a pipe delimited format sdfsdfs sdfsdfsd START_ROW sdfsd|sdfsdfsd|sdfsdfasdf|sdfsadf|sdfasdf... (9 Replies)
Discussion started by: manish2009
9 Replies

10. UNIX for Dummies Questions & Answers

how can i isolate the random sequence of numbers using awk?

as you can see there is a delimiter after c8 "::". Awk sees the rest as fields because it doesn't recognize spaces and tabs as delimiters. So i am basically looking to isolate 20030003ba13f6cc. Can anyone help? c8::20030003ba13f6cc disk connected configured unknown (2 Replies)
Discussion started by: rcon1
2 Replies
Login or Register to Ask a Question