Extract numbers below words with awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract numbers below words with awk
# 1  
Old 01-12-2009
Extract numbers below words with awk

Hi all,

Please some help over here. I have a Sales.txt file containing info in blocks for
every sold product in the pattern showed below (only for 2 products).

Code:
 
NEW BLOCK
SALE DATA 
PRODUCT           SERIAL             
79833269999      146701011945004  
.Some other data 
.Some other data 
.Some other data 
SALE SERIAL                     SALE NUMBER
7-4324990101                    4324990101         
STORE NUMBER
7-43212     
END OF BLOCK
 
NEW BLOCK
SALE DATA
PRODUCT           SERIAL             
79806743123      1598670108411112  
.Some other data 
.Some other data 
.Some other data 
SALE SERIAL                     SALE NUMBER
7-4324995448                    4324995448        
STORE NUMBER
7-43213     
END OF BLOCK

I´ve used awk for basic things, but this is beyond my knowledge. I´d like to extract only the number below the word "PRODUCT" and its respective number below "SALE SERIAL" and store the processed data in a new file.

For the data blocks above the desired result would be.

79833269999 7-4324990101
79806743123 7-4324995448

Somebody could help me with this issue please. Grateful for any help or suggestion.

Best regards
# 2  
Old 01-12-2009
awk '/PRODUCT/ {getline ; print}' sales.txt
# 3  
Old 01-12-2009
Many thanks jpradley for your answer,

I´ve tryied adding the word SALE SERIAL to get the number below this word either.

awk '/PRODUCT/||/SALE SERIAL/ {getline ; print}' sales.txt > OutSales.txt

But the result is:

79833269999 146701011945004
7-4324990101 4324990101
79806743123 1598670108411112
7-4324995448 4324995448

How can I get only the number in first column below every word to see the info as follow: (I mean, leaving the numbers in red in the same line and erasing the other ones)

79833269999 7-4324990101 -->numbers extracted from block 1
79806743123 7-4324995448 -->numbers extracted from block 2

Thanks again.

Best regards.
# 4  
Old 01-12-2009
awk '
/PRODUCT/ {getline; print}
/SALE SERIAL/ {getline; print $1}
' sales.txt
# 5  
Old 01-13-2009
Now I have the wanted result, many thanks jpradley for your help and time, with your tips and after several tests I´ve found a code that works for my request. There are 3 different commands that I put in a .sh file, but I´m not sure how to join them in one command in order to write "awk" only once.

Code:
 
awk '/^PRODUCT/ {getline;
 print $1
}
/^SALE SERIAL/ {getline;
 print $1
}' Sales.txt > Sales_Temp.txt
awk 'ORS = NR%2 ? " " : "\n"
' Sales_Temp.txt > Sales_Filtered.txt
 
rm Sales_Temp.txt

Really thanks again.
# 6  
Old 01-13-2009
Code:
#! /usr/bin/perl
open FH,"<a.txt";
while(<FH>){
	if (/PRODUCT/ || /SALE SERIAL/){
		$flag=1;
		next;
	}
	if ($flag==1){
		$flag=0;
		@tmp=split(/( |	)+/,$_);
		print $tmp[0]," ";
	}
	print "\n" if /END OF BLOCK/;
}
close FH;

# 7  
Old 01-13-2009
Hi summer_cherry, thanks for contribution to my question.

I´ve tryed with your code replacing the source file name like this

Code:
open FH,"<Sales.txt";

instead of

Code:
 
open FH,"<a.txt";

But doesn´t work.

The source file is "Sales.txt" and the destination file I´d like "Sales_Filtered.txt".

How edit the file names within the code?

Thanks in advance.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Adding numbers matching with words

Hi All, I have a file which looks like this: abc 1 abc 2 abc 3 abc 4 abc 5 bcd 1 bcd 3 bcd 3 bcd 5 cde 7 This file is just a miniature version of what I really have. Original file is some 1 million lines long. I have tried to come up with the code for what I wish to accomplish... (1 Reply)
Discussion started by: shoaibjameel123
1 Replies

2. Shell Programming and Scripting

Put numbers against the words

Hi All, I tried to solve this but the result gives me all zeros for one file. I failed to do for all 500 files. I have some 500 files with the extension .dat I have another set of files; 500 in number with extension .dic I created these .dic files by using sort -u from the actual .dat files.... (2 Replies)
Discussion started by: shoaibjameel123
2 Replies

3. Shell Programming and Scripting

Extract words from a pipe

Hello, Currently, I have this output from my application : ------------------------------------------------- Log viewer/Tmp1 (Jun 29 2011 09:48) ------------------------------------------------- BlalbalbaBlalbalba..Blalbalba..Blalbalba..Blalbalba..Blalbalba..Blalbalba..Blalbalba....... (3 Replies)
Discussion started by: acidoangel
3 Replies

4. UNIX for Dummies Questions & Answers

Trying to sort words and numbers associated with them.

Hi. I have a file containing words and numbers associated with them as follows - c 2 b 5 c 5 b 6 a 10 b 16 c 18 a 19 b 21 c 27 a 28 b 33 a 76 a 115 c 199 c 251 a 567 a 1909 (4 Replies)
Discussion started by: maq
4 Replies

5. Shell Programming and Scripting

Difference between words and not between numbers

Hi, Sorry in advance for propably a silly question, but I am a bit lost. On some of the linux job flow I have the following check: if ($file != 1500) then echo ERROR It works ok, all times $file is not equal to 1500 I have the error message. I try to do something similar... (7 Replies)
Discussion started by: essemario
7 Replies

6. Shell Programming and Scripting

Printing the column that begins with certain words/numbers

Hi guys, I have got a file which doesn't have the same number of columns in each line. I would like to print the second column and the one that begins with 33= and has some numbers after '33=' Can you please help me asap? Cheers (7 Replies)
Discussion started by: alexandra_ola
7 Replies

7. Shell Programming and Scripting

Query to print numbers in words

Hi, I have to write a shell script that converts numbers in to words below is what i wrote.My script is not running. ----------------------------------- echo -n "Enter number : " read n len= echo $n | wc -c echo " number in words : " for ( i=1; i<len; i++ ) do num=echo $n... (5 Replies)
Discussion started by: bab123
5 Replies

8. Web Development

Query to print numbers in words

Hi, If i give a number say "1234" the output of mysql query should be: one thousand and twenty four How to write mysql query for this? With regards Vanitha (5 Replies)
Discussion started by: vanitham
5 Replies

9. UNIX for Dummies Questions & Answers

how to separate numbers and words from a file using shell scripts

Hi, How to separate numbers and words(with full alphabets) in a particular file and store it in two different files. Please help me out for this.Using shell scripting. :confused::confused: (1 Reply)
Discussion started by: kamakshi s
1 Replies

10. Shell Programming and Scripting

grep or awk problem, unable to extract numbers

Hi, I've trouble getting some numbers from a html-file. The thing is that I have several html-logs that contains lines like this: nerdnerd, how_old_r_u:45782<br>APPLY: <hour_second> Verification succeded This is some of what I've extracted from a html file but all I really want is the number... (7 Replies)
Discussion started by: baghera
7 Replies
Login or Register to Ask a Question