Visit Our UNIX and Linux User Community


substr problem in KSH


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting substr problem in KSH
# 1  
Old 03-16-2006
substr problem in KSH

in my script i have a command which will sum a particular value of all the lines in a file not beginning with H or T .
I have given the following commands

-------------------------------------------------------------
RCRD_CTRL_VAL_1_SUM=`awk '/^[^HT]/{ SUM+=substr($0,${TRLR_CTRL_VAL_1[0]},${TRLR_CTREL_VAL_1[1]})}END {printf "%015.2f", SUM}'
$FILE_NAME`

where the array values
TRLR_CTRL_VAL_1[0] =98 and
TRLR_CTRL_VAL_1[1] =10 ( the positions of the amount to be summed )

but this is thrwoing an error :-
Syntax Error The source line is 1.
The error context is
/^[^HT]/{ >>> SUM+=substr($0,${ <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
awk: 0602-500 Quitting The source line is 1.

pls tell me the solution .

do i have to intialize the position and length values in BEGIN?
# 2  
Old 03-16-2006
The shell variables, ${TRLR_CTRL_VAL_1[0]} and ${TRLR_CTREL_VAL_1[1]} are not expanded in the awk script. Pass them as variables.
Code:
... awk -v v1=${TRLR_CTRL_VAL_1[0]} -v v2=${TRLR_CTREL_VAL_1[1]} '/^[^HT]/{ SUM+=substr($0,v1,v2)}END {printf "%015.2f", SUM}' ...

# 3  
Old 03-16-2006
I am still getting the same error message even after doing so
# 4  
Old 03-16-2006
I tried the following command but still for the same message
-------------------------------------------------------------
Quote:
Originally Posted by tmarikle
The shell variables, ${TRLR_CTRL_VAL_1[0]} and ${TRLR_CTREL_VAL_1[1]} are not expanded in the awk script. Pass them as variables.
Code:
... awk -v v1=${TRLR_CTRL_VAL_1[0]} -v v2=${TRLR_CTREL_VAL_1[1]} '/^[^HT]/{ SUM+=substr($0,v1,v2)}END {printf "%015.2f", SUM}' ...

# 5  
Old 03-16-2006
Now replace awk with nawk.
# 6  
Old 03-16-2006
I have to use AWK only
Quote:
Originally Posted by tmarikle
Now replace awk with nawk.
# 7  
Old 03-16-2006
Some versions of awk won't allow variables so you can try this:

awk '/^[^HT]/{ SUM+=substr($0,'${TRLR_CTRL_VAL_1[0]}','${TRLR_CTREL_VAL_1[1]}')}END {printf "%015.2f", SUM}'

Notice the additional single quotes surrounding your variables.

Last edited by tmarikle; 03-16-2006 at 04:16 PM.. Reason: forgot 1 single quote

Previous Thread | Next Thread
Test Your Knowledge in Computers #271
Difficulty: Easy
While working at Bletchley Park, in the first week of June each year Alan Turing would get a bad attack of hay fever, and he would cycle to the office wearing a service gas mask to keep from breathing pollen. In the first week of June each year he would get a bad attack of hay fever, and he would cycle to the office wearing a service gas mask to keep from breathing the pollen.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh and mail problem

Script A: #!/bin/ksh /usr/bin/mail -s "case 4" g@f.com <testF5Email.inp Script B: #!/bin/ksh qq="-s \"case 4\" cstsang@hko.hksarg" /usr/bin/mail $qq<testEmail.inp Script A working properly where Script B cannot. The error message as the following: There is a missing '"' character... (3 Replies)
Discussion started by: cstsang
3 Replies

2. Shell Programming and Scripting

Execution problem with ksh

Dear All, I have a script as follows: 1 #! /bin/ksh 2 # 28 varDate=`date +%d%h%y` 29 export spool_file=/app/my_user/work/TH_Status_${varDate}_Check.txt 30 31 ######################### 32 # Unix Code Starts here # 33 ######################### ... (3 Replies)
Discussion started by: saps19
3 Replies

3. Shell Programming and Scripting

problem in assigning substr to a variable inside awk

Hi All, I have a fixed-width datafile from which i need to extract value/string starting from some position to the specified length in each of the lines. awk '{print substr($0,x,y)}' datafile --- is working fine but awk 'BEGIN{a=0}{a=substr($0,x,y);print $a}' datafile ---is giving... (3 Replies)
Discussion started by: loggedin.ksh
3 Replies

4. Shell Programming and Scripting

sed problem in ksh

Hi, I have the following issue while replacing text in a file usind sed $ cat file $ One,ABCD\XYZ,Server one i want to replace ABCD\XYZ with another text SERVER. with ABCD\XYZ stored in a variable. #!/bin/ksh VAR=ABCD\XYZ echo $VAR cat file | sed 's/'"$VAR"'/SERVER/' ... (14 Replies)
Discussion started by: sudheer1984
14 Replies

5. Shell Programming and Scripting

Ksh problem

I am having a problem with this command working, can anyond help? $ export Path=/user/bin user/local/bin /user/ucb/bin (2 Replies)
Discussion started by: vthokiefan
2 Replies

6. Shell Programming and Scripting

Please help problem in KSH

Hi All, I have got a problem. I have written a Shell script which cuts some information from the file a and puts it in file b. But i get this error when i execute the shell script. This is what i have written in the script. #! /usr/bin cd /test ls $2 > a cut -f 1 -d '.' a > b When i... (2 Replies)
Discussion started by: srikanthshastry
2 Replies

7. UNIX for Dummies Questions & Answers

strange problem for substr

i have following in block if then echo "Exclusion criteria" else echo "Not exclusion criteria" fi now above block runs fine if value of variable line_by_line is "00000000dfahfahfahfahsfhasfhafhahfahfahf" but same block gives error if value is "0000000000202000501000069BAG ICE ... (1 Reply)
Discussion started by: mahabunta
1 Replies

8. Shell Programming and Scripting

Ksh problem in script

Hi I made a small script which uses ksh. When i run the script then i get the following error However when i run each of the commands on the commandline they get executed and provide the desired output. i cant figure out why the script is not running. Kindly Help Thanks in... (3 Replies)
Discussion started by: PradeepRed
3 Replies

9. Shell Programming and Scripting

ksh case problem

I'm trying to run a ksh script with a case condition to handle parameters. #!/bin/ksh db_start(){ *code } db_shut(){ *code } case "$1" in up) db_start TRNG ;; down) db_shut TRNG ;; *) echo "Usage: $0 { up | down }" (3 Replies)
Discussion started by: digiteck
3 Replies

10. Shell Programming and Scripting

ksh problem

when declaring a variable e.g. export DAYS what checking / how can i check that the value assigned only contains numeric characters or integers ? (1 Reply)
Discussion started by: jinky
1 Replies

Featured Tech Videos