AWK for a beginner


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK for a beginner
# 1  
Old 09-19-2012
AWK for a beginner

I am going to learn AWK for Pattern search (extracting strings ) related activities. I think that is what AWK is used for anyway.
What book/similair resource would you suggest for a beginner ?
# 2  
Old 09-19-2012
I'd start with a running system, man pages and internet free tutorials. The regular expressions part of awk is a nested item to master on its own.
  • awk is good for lines of fields with regular expression matching that can stimulate storage and printing of values.
  • bash/ksh can do similar field activities, but awk has more of a field orientation and has advanced options that make it easier to process flows of data.
  • sed is more focused on strings and can consider multiple lines, but the state is where in the script is executing and what is in the pattern space buffers. Much of the syntax and regular expression matching is ex/vi/perl/awk/grep/emacs compatible.
# 3  
Old 09-19-2012
The funny thing about awk is that it comes with its own built-in while loop.

A program that looks like this:
Code:
awk '/regex/ { print $1 }' filename

Works like this pseudocode:

Code:
FS=" "; // Field separator
RS="\n";  // Record separator
NR=1; // Total number of lines read

for(FNR=1; !end_of_file("filename");  FNR++, NR++)
{
        $0=read_line("filename", RS); # Read until next RS character
        tokens[]=split($0, FS); # Split "a b c" into "a", "b", "c"

        if(match(/regex/, $0)) print(tokens[1]);
}

FS and RS are special variables in awk which you can use to change what awk thinks columns and newlines are.

NR and FNR are special variables which count the total number of lines, and the line number in the current file respectively.
# 4  
Old 09-19-2012
The read loop is intrinsic in sed, too, but you can make your own loop reading with 'N', and the = operator is a weak line counter (only prints, so you need a sed after to marry the two line set).

Only the shells need something like "while read ... do ... done <file" and I fear there might not be any eof last line test while processing the last line. Shells can capture lines with 'line' and test that for eof before processing, but you have to read a line ahead to know EOF is waiting, so the loop gets pretty messy.

Last edited by DGPickett; 09-19-2012 at 05:41 PM..
# 5  
Old 09-20-2012
Quote:
Originally Posted by omega3
What book/similair resource would you suggest for a beginner ?
"sed & awk" by Dale Dougherty, printed by O'Reilly. A phantastic book, written with a good dose of humor, so it makes an educating as well as an entertaining read.

I thought i know sed until i got this book ~15 years ago and relearned it - this time for real.

I hope this helps.

bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

Help me please i am beginner

i have windows 8 host on Dell Laptop vmware 9 redhat 7.2 iso downloaded through redhat official site after installation on vm it only boots into text dont show graphics Please guide:( (1 Reply)
Discussion started by: hananabbas
1 Replies

2. UNIX for Dummies Questions & Answers

awk Help - Beginner

Hi, I think I need to use AWK - however I have no experience of it. Can someone help please? I have a file like this but with many more records - it is fixed width THIS15021X 799999 XX 00000099999 00008888888 XX 15022013 THISQ15021X 999999 XX 00000099999... (7 Replies)
Discussion started by: mcclunyboy
7 Replies

3. Shell Programming and Scripting

""Help Me!""Beginner awk learning issue

Hi All, I have just now started learning awk from the source - Awk - A Tutorial and Introduction - by Bruce Barnett and the bad part is that I am stuck on the very first example for running the awk script. The script is as - #!/bin/sh # Linux users have to change $8 to $9 awk ' BEGIN ... (6 Replies)
Discussion started by: csrohit
6 Replies

4. Shell Programming and Scripting

Beginner looking for help

Hello, I am trying to write a script that reads names from a file called input, removes names if they have the same letter next to each other and prints the others. e.g. Colin & John would be printed Garry & Lynn would be removed My thinking is that I read in each name and... (3 Replies)
Discussion started by: colinireland
3 Replies

5. UNIX for Dummies Questions & Answers

Beginner - What Should I Do First?

Hi people.... I have just started to learn unix.I want to know which version of Unix to install plus how to install it.I need to practise and make myself aware of how unix works.My thread is from an educational point of view.Also please feel free to give your suggestions as I am... (3 Replies)
Discussion started by: amit.kanade1983
3 Replies

6. Shell Programming and Scripting

Beginner Help

I need to write a script to test a nsort c program. I have written 8 .txt files with different cases. Also 8 .txt files with expected outcome. The shell I have written always "test pass" for the first case but always "fail" for the rest... Here is a portion of my code (as I still don't know how to... (5 Replies)
Discussion started by: thibodeau
5 Replies

7. UNIX for Dummies Questions & Answers

Beginner Help

hi guys, i have a DEl xps laptop cor 2 duo 2.2 i have vista installed on it i want to install a dual Boot UNIX on it.. can some one guide me ...cause i m tottaly new to UNIX i want to install unix on that laptop along with Vista.... thx any help would be deeply appreciated (sorry if i... (5 Replies)
Discussion started by: Farhan082
5 Replies

8. UNIX for Dummies Questions & Answers

AWK help please - beginner

Hi, I'm in dire need of some help for AWK. I'm a college student and my statistics professor decided he'd teach AWK in the last two days of our class, even when it's not programming class and we don't even have computers in class to experiment. Anyway, I tried looking at AWK tutorials, but it... (4 Replies)
Discussion started by: COLLEGE
4 Replies

9. Programming

Beginner C

Anyone know where I can get started in C++ programming in unix? Any good free tutorials or websites to start at? I am okay in unix scripting but have never done c programming of any sort... What are the main advantages of using C++ ? (2 Replies)
Discussion started by: frustrated1
2 Replies

10. Shell Programming and Scripting

Please help. I am a beginner.

Alrigt, I need to write a shell script where it counts the number of folders and files and dispays "My home directory has 'x' files and 'y' directories." So, I was thinking of doing this. set x = `ls | wc` so, if I have 8 files and folders in my home directory, x is not 8. now, I was... (1 Reply)
Discussion started by: Lykathea Aflame
1 Replies
Login or Register to Ask a Question