Extract numbers below words with awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract numbers below words with awk
# 8  
Old 01-13-2009
Quote:
Originally Posted by cgkmal
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.
Try this:

Code:
awk '/^PRODUCT/ {getline; printf("%s%s", $1, NR%2? FS:RS}
/^SALE SERIAL/ {getline; printf("%s%s", $1, NR%2? FS:RS}
' Sales.txt > Sales_Filtered.txt

Regards
# 9  
Old 01-13-2009
Hi Franklin52,

Many thanks for your answer.

I,ve tryed your suggestion

Code:
 
awk '/^PRODUCT/ {getline; printf("%s%s", $1, NR%2? FS:RS)} 
/^SALE SERIAL/ {getline; printf("%s%s", $1, NR%2? FS:RS)}
' Sales.txt

and a little bit shorter variant

Code:
awk '/^PRODUCT/||/^SALE SERIAL/ {getline; printf("%s%s", $1, NR%2? FS:RS)}' Sales.txt

but the result is the same, as follow:

79833269999
7-4324990101 79806743123 7-4324995448

and not like I´d like, as follow:

79833269999 7-4324990101
79806743123 7-4324995448

What it´s missing?

I´m beginning to understand awk´s logic, thanks for your help.

Best regards
# 10  
Old 01-13-2009
Sorry, I looked over something, try this:

Code:
awk '/^PRODUCT/ {getline; printf("%s ", $1)} 
/^SALE SERIAL/ {getline; printf("%s\n", $1)}
' Sales.txt

Regards
# 11  
Old 01-13-2009
Hi, I'm newby to scripting. Thanks in advance for your input.. I have a flat file like below:
"Mon Jan 7 11:32:25 EST 2008",
291
"Mon Jan 7 12:01:00 EST 2008",
291
"Mon Jan 7 18:01:00 EST 2008",
318
"Tue Jan 8 00:01:00 EST 2008",
357
"Tue Jan 8 06:01:00 EST 2008",
352
"Tue Jan 8 12:01:00 EST 2008",
388
"Tue Jan 8 18:01:00 EST 2008",
387
"Wed Jan 9 00:01:00 EST 2008",
387
"Wed Jan 9 06:01:00 EST 2008",
406
"Wed Jan 9 12:01:00 EST 2008",
403
"Wed Jan 9 18:01:00 EST 2008",
406
"Thu Jan 10 00:01:00 EST 2008",
414
"Thu Jan 10 06:01:00 EST 2008",

I need to merge line 1 and 2, then 3 and 4, to make it become:
"Mon Jan 7 11:32:25 EST 2008", 291
"Mon Jan 7 12:01:00 EST 2008",291
"Mon Jan 7 18:01:00 EST 2008",318
"Tue Jan 8 00:01:00 EST 2008",357
"Tue Jan 8 06:01:00 EST 2008",352
"Tue Jan 8 12:01:00 EST 2008",388
"Tue Jan 8 18:01:00 EST 2008",387
"Wed Jan 9 00:01:00 EST 2008",387
"Wed Jan 9 06:01:00 EST 2008",406
"Wed Jan 9 12:01:00 EST 2008",403
"Wed Jan 9 18:01:00 EST 2008",406
"Thu Jan 10 00:01:00 EST 2008",414
"Thu Jan 10 06:01:00 EST 2008",.......

Any quick way to do it?? Thanks!
# 12  
Old 01-13-2009
Perfect man!!!

I understand almost all code:

getline= Get data from line below
$1=Get data from column 1

but only one more thing, what it´s means in your code

"%s "=
"%s\n"=

I dont get the meaning.

Thanks in advance
# 13  
Old 01-13-2009
Quote:
Originally Posted by cgkmal
Perfect man!!!

I understand almost all code:

getline= Get data from line below
$1=Get data from column 1

but only one more thing, what it´s means in your code

"%s "=
"%s\n"=

I dont get the meaning.

Thanks in advance
Code:
"%s " = print a space after the line
"%s\n"= print a newline after the line

Regards
# 14  
Old 01-13-2009
Many thanks Franklin52, I´ve learned several things through this question.
Thanks for your contribution and take some of your time to share what you know.

Hi flyingfish,

Part of my problem was exactly you´re asking.

I got a sample code over there that does what you want; I mean, put odd lines in column 1
and even lines in column 2. I´m not completely sure how it works, but it works Smilie

Try with:
(To print in display the processed data)
Code:
  awk 'ORS = NR%2 ? " " : "\n"' Source.txt

or

(To send the processed data from Source.txt to the file Destination.txt)
Code:
awk 'ORS = NR%2 ? " " : "\n"' Source.txt > Destination.txt

I hope it helps,

Really thanks to all,

Best regards
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