grep, awk, typeset in a shell script..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep, awk, typeset in a shell script..
# 1  
Old 08-06-2008
grep, awk, typeset in a shell script..

For e.g I have a file named "relation" which has three coloums i.e

JOHN MARY JACK
PETE ALISIA JONNY
TONY JACKIE VICTOR

If I do
grep -w 'JOHN' relation | awk '{print""$1" is husband of "$2" & father of "$3""}'

It gives out
JOHN i husband of MARY & father of JACK (which is desired output for me)

I put this thing into script but it stops working. All I am doing is to change the input in Upper case & using grep, awk after that.

#!/usr/bin/ksh
name=$1
print "$name"
echo "$name" | tr '[a-z]' '[A-Z]' >$NAME
print "$NAME"
grep -w "$NAME" relation |awk '{print""$1" is husband of "$2" & father of "$3""}' >$out
print "$out"
exit 0

If I run it like ./scriptname john
it gives output
john
JOHN

Can anyone plz help me to fix it..

I had given an example.
# 2  
Old 08-06-2008
This line is incorrect. Insted of assigning the result to the variable NAME, you are redirecting the output of the command to a file, whose name is stored in the variable NAME (which I presume is currently undefined).

Code:
echo "$name" | tr '[a-z]' '[A-Z]' >$NAME

I think this will give the result you expect:

Code:
name=$(echo "$name" | tr '[a-z]' '[A-Z]')
# or this, but I prefer the previous syntax
name=`echo "$name" | tr '[a-z]' '[A-Z]'`

Similarly with $out, you need to make the same change.
# 3  
Old 08-07-2008
Code:
nawk '{print toupper($1)" is husband of"toupper($2)" & father of "toupper($3)}' filename

# 4  
Old 08-07-2008
Quote:
Originally Posted by summer_cherry
Code:
nawk '{print toupper($1)" is husband of"toupper($2)" & father of "toupper($3)}' filename

Thanks for the reply but this thing won't work since I am converting lowercase to Uppercase so that the grep can work b'coz in the file everything is in uppercase. I m doing something wrong in grep statement not in awk one.
# 5  
Old 08-07-2008
What does your code look like now?

Have you made the same change to the grep line as I recommended for the tr line?
# 6  
Old 08-07-2008
Quote:
Originally Posted by Annihilannic
What does your code look like now?

Have you made the same change to the grep line as I recommended for the tr line?
Will try that when I go to office tommorow..Thanks for the help.Smilie
# 7  
Old 08-07-2008
Nothing here is ksh-specific, so I changed it to use /bin/sh

Code:
#!/bin/sh
name=$1
print "$name"
nawk -v name="$1" '$1 == toupper(name){print""$1" is husband of "$2" & father of "$3""}'
exit 0

I think you are expecting the redirections (>$out etc) to assign the output to a variable, but it doesn't do that. It sends the output to a file whose name is $out

Like Annihilannic tried to explain, the syntax for assigning the output from a command to a variable is var=`commands` or equivalently var=$(commands) ... but unless you need the variable for something else than just printing it immediately, using variables at all is unnecessary.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Typeset is not working in Linux korn shell scripting

Hi All, Kindly help on the below issue ASAP. Its very urgent. I have script in which we have below two lines for code and it is not working. Please help. files_to_process=" abc_*.log def_*.log ghi_*.log " typeset -A dir_list ${files_to_process} the script is failing in Linux... (3 Replies)
Discussion started by: tvbhkishore
3 Replies

2. Shell Programming and Scripting

Unable to pass shell script variable to awk command in same shell script

I have a shell script (.sh) and I want to pass a parameter value to the awk command but I am getting exception, please assist. diff=$1$2.diff id=$2 new=new_$diff echo "My id is $1" echo "I want to sync for user account $id" ##awk command I am using is as below cat $diff | awk... (2 Replies)
Discussion started by: Ashunayak
2 Replies

3. Homework & Coursework Questions

Shell Script: Sorting by column using grep/awk

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: You will write a script that will read a tab-separated file that contains the names of all 50 states &... (7 Replies)
Discussion started by: tburns517
7 Replies

4. Shell Programming and Scripting

Help when using Typeset in AIX Korn Shell

Guys, please help! I am currently using an AIX server however whenever I tried to use the typeset -F3, the variable is resulting with a "#". In the given example below, I declared x to be a decimal holding 3 decimal places = 1.455. However whenever I tried to echo the $x, the resulting value... (9 Replies)
Discussion started by: zzavilz
9 Replies

5. Shell Programming and Scripting

Script with awk and grep

Hi .. I am working on a shell script to do following task. I have Input file as follows. I have to find failed or Offline disk and run command # hic -ip 172.124.24.59 getlogicalgrp |grep -B10 diskid against the disk ID which is 1 line above the disk state. I am using grep with -b10 is because... (7 Replies)
Discussion started by: dynamax
7 Replies

6. Shell Programming and Scripting

how the typeset command works in shell script

typeset -l section section=${2:-.} what does these 2 lines meaning? (1 Reply)
Discussion started by: venkatababu
1 Replies

7. Shell Programming and Scripting

How to grep sql error in shell script and exit the script?

I need help in the following script. I want to grep the sql errors insert into the error table and exit the shell script if there is any error, otherwise keep running the scripts. Here is my script #!/bin/csh -f source .orapass set user = $USER set pass = $PASS cd /opt/data/scripts echo... (2 Replies)
Discussion started by: allinshell99
2 Replies

8. Shell Programming and Scripting

Help me with awk and grep script

#!/bin/sh PRINTF=/usr/bin/printf $PRINTF "Enter a UserID\n" read USERID for USERID in `cat passwd | awk -F : '{print $1}'` do USERHOME=`grep ^$/qianxin/ passwd | awk -F : '{print $6}'` USERSHELL=`grep ^$/qianxin/ passwd | awk -F : '{print $7}'` $PRINTF "$USERID\n" $PRINTF... (3 Replies)
Discussion started by: ikeQ
3 Replies

9. Shell Programming and Scripting

Shell script / Grep / Awk to variable and Loop

Hi, I have a text file with data in that I wish to extract, assign to a variable and process through a loop. Kind of the process that I am after: 1: Grep the text file for the values. Currently using: cat /root/test.txt | grep TESTING= | awk -F"=" '{ a = $2 } {print a}' | sort -u ... (0 Replies)
Discussion started by: Spoonless
0 Replies

10. Shell Programming and Scripting

typeset and values returned from awk output

Somebody can please give a highlight on this. The problem shows only on Linux(Redhat) not any other unix flavors :confused: Linux : $unset m $m=`find . -newer rman_padev_20051206195000.out -name "*L0.rman" -exec ls -l {} \; | awk '{ s+=$5 } END{printf("%.0f", s)}'` $echo $m 7425089536... (0 Replies)
Discussion started by: prathom
0 Replies
Login or Register to Ask a Question