""Help Me!""Beginner awk learning issue


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting ""Help Me!""Beginner awk learning issue
# 1  
Old 03-05-2012
""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 -
Code:
#!/bin/sh
# Linux users have to change $8 to $9
awk '
BEGIN  { print "File\tOwner" } 
  { print $8, "\t", $3} 
END    { print " - DONE -" } 
'

However when I am saving it and running it as - "awk -f awk_example1.sh"

I am getting an error -
Code:
awk: awk_example1.sh:3: awk '
awk: awk_example1.sh:3:     ^ invalid char ''' in expression

Please can you suggest where I am getting this wrong ?
Please can anyone also suggest some good source to learn awk for a begineer ?

Thanks in advance.
Cheers!!!
# 2  
Old 03-05-2012
How do you run the above awk script..? Try like sh awk_example1.sh where
Code:
[mkt @michael]$ cat awk_example1.sh
#!/bin/sh
# Linux users have to change $8 to $9
awk '
BEGIN  { print "File\tOwner" } 
  { print $8, "\t", $3} 
END    { print " - DONE -" } 
'
[mkt @michael]$

Also post the OS your using.
This User Gave Thanks to michaelrozar17 For This Post:
# 3  
Old 03-05-2012
Quote:
Originally Posted by csrohit
Code:
#!/bin/sh
# Linux users have to change $8 to $9
awk '
BEGIN  { print "File\tOwner" } 
  { print $8, "\t", $3} 
END    { print " - DONE -" } 
'

However when I am saving it and running it as - "awk -f awk_example1.sh"
1. What is the input to your awk statement? $8 and $3 refer to the 8th and 3rd fields of an input. But your awk doesn't know what the input is.
2. You've written the awk statement in a shell script yet you invoked it as an awk program.
3. The study material you mentioned is good enough. Read once more and you'll understand.

Copy-paste this on your command line and try to understand what's happening:
Code:
ls -l | awk 'BEGIN {print "File => Owner"} {print $9, "=>", $3} END { print "- DONE -" }'

The output of 'ls -l' is sent as input to awk which prints the 9th field followed by an arrow followed by the 3rd field.
This User Gave Thanks to balajesuri For This Post:
# 4  
Old 03-05-2012
sh awk_example1.sh worked fine and ./awk_example1.sh too worked but the output that I am getting is just as -
Code:
File    Owner

However I am having two files in current directory.

The OS that I am using is Linux.
# 5  
Old 03-05-2012
may be you are not passing the ouput of ls -l command

Code:
$cat awk_example1.sh
#!/bin/sh
# Linux users have to change $8 to $9
ls -l | awk '
BEGIN  { print "File\tOwner" } 
  { print $8, "\t", $3} 
END    { print " - DONE -" } 
'

This User Gave Thanks to itkamaraj For This Post:
# 6  
Old 03-05-2012
Quote:
Originally Posted by csrohit
sh awk_example1.sh worked fine and ./awk_example1.sh too worked but the output that I am getting is just as -
Code:
File    Owner

However I am having two files in current directory.
The OS that I am using is Linux.
Ok.Since you do not pass any input to awk statement you just get the output as File Owner. Try as suggested by itkamaraj or ls -l | ./awk_example1.sh
This User Gave Thanks to michaelrozar17 For This Post:
# 7  
Old 03-05-2012
Thanks a lot...that worked..cheers!!

Quote:
Originally Posted by itkamaraj
may be you are not passing the ouput of ls -l command

Code:
$cat awk_example1.sh
#!/bin/sh
# Linux users have to change $8 to $9
ls -l | awk '
BEGIN  { print "File\tOwner" } 
  { print $8, "\t", $3} 
END    { print " - DONE -" } 
'

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

ps -ef | grep "string1" "string2" " "string3"

Hi all, can any one suggest me the script to grep multiple strings from ps -ef pls correct the below script . its not working/ i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK. bash-3.00$ ps -ef | grep blu lscpusr 48 42 ... (11 Replies)
Discussion started by: steve2216
11 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question