basicsys@mars~/lec12>cat A1 BEGIN {A[12]="abc";A["abc"]=100;A["de"]="w100z"; for (y in A) { print y,"A["y"]="A[y] } } basicsys@mars~/lec12>awk -f A1 de A[de]=w100z abc A[abc]=100 12 A[12]=abc basicsys@mars~/lec12>cat A2 BEGIN {A[12]="abc";A["abc"]=100;A["de"]="w100z"; print "length of A is:", length(A) for (y in A) {i++} print "i=", i } basicsys@mars~/lec12>awk -f A2 length of A is: 3 i= 3 basicsys@mars~/lec12>cat A3 # examples of usage of substr BEGIN { s="abcdef"; print "substr(s,2,3)="substr(s,2,3) print "substr(s,2)="substr(s,2) print "substr(\"abcdef\",2,3)="substr("abcdef",2,3) } basicsys@mars~/lec12>awk -f A3 substr(s,2,3)=bcd substr(s,2)=bcdef substr("abcdef",2,3)=bcd basicsys@mars~/lec12>cat A4 { if (NF > max_nf) { max_nf = NF } for (i=1 ; i <= NF ; i++ ) { if (length($i) > A[i] ) { A[i] = length($i) } } } END { i=1 while (i <= max_nf) { s = s " " A[i] i++ } s = substr(s,2) print s } basicsys@mars~/lec12>cat F3 abcddd eee ffffff abc g hhhhh abc z a b c d e f g h basicsys@mars~/lec12>awk -f A4 F3 6 5 6 3 1 1 1 1 basicsys@mars~/lec12>cat A5 { print $0 gsub(/abc/,111) print $0 } basicsys@mars~/lec12>awk -f A5 F3 abcddd eee ffffff abc 111ddd eee ffffff 111 g hhhhh abc z g hhhhh 111 z a b c d e f g h a b c d e f g h basicsys@mars~/lec12>cat A6 { print $0 gsub(/abc/,111,$1) print $0 } basicsys@mars~/lec12>awk -f A6 F3 abcddd eee ffffff abc 111ddd eee ffffff abc g hhhhh abc z g hhhhh abc z a b c d e f g h a b c d e f g h basicsys@mars~/lec12>cat A7 BEGIN { s="abcdef" gsub(/[adf]/,111,s) print s } basicsys@mars~/lec12>awk -f A7 111bc111e111 basicsys@mars~/lec12>cat A8 BEGIN { n=split("1aaabc2abc3",A,/a+/) print "A[1]=" A[1] print "A[2]=" A[2] print "A[3]=" A[3] for (i in A) { print "A[" i "]=" A[i] } print "n=" n } basicsys@mars~/lec12>awk -f A8 A[1]=1 A[2]=bc2 A[3]=bc3 A[1]=1 A[2]=bc2 A[3]=bc3 n=3 basicsys@mars~/lec12>cat A9 BEGIN { n=split("1aaabc2abc3",A,/a/) for (i in A) { print "A[" i "]=" A[i] } print "n=" n print "A[1]=" A[1] print "A[2]=" A[2] print "A[3]=" A[3] } basicsys@mars~/lec12>awk -f A9 A[4]=bc2 A[5]=bc3 A[1]=1 A[2]= A[3]= n=5 A[1]=1 A[2]= A[3]= basicsys@mars~/lec12>cat A10 BEGIN {ORS=""} { for (j=1;j <=NF; j++) { A[NR,j]=$j } } END { for (i=1; i<=NR; i++) { for (j=1; j<= NF; j++) { print A[i,j] } print "\n"; } } basicsys@mars~/lec12>cat F3 abcddd eee ffffff abc g hhhhh abc z a b c d e f g h basicsys@mars~/lec12>awk -f A10 F3 abcdddeeeffffffabc ghhhhhabcz abcdefgh basicsys@mars~/lec12>cat A3 #!/bin/bash x=8 function f1 { echo "inside f1 x=$x" x=9 y=10 } echo "outside before calling f1 x=$x y=$y" f1 echo "outside after calling f1 x=$x y=$y" basicsys@mars~/lec12>A3 outside before calling f1 x=8 y= inside f1 x=8 outside after calling f1 x=9 y=10 basicsys@mars~/lec12>cat A4 #!/bin/bash x=8 function f1 { echo "inside f1 x=$x" local x local y=10 echo "inside f1 after local statement x=$x y=$y x=9 } echo "outside before calling f1 x=$x y=$y" f1 echo "outside after calling f1 x=$x y=$y" basicsys@mars~/lec12>A4 outside before calling f1 x=8 y= inside f1 x=8 inside f1 after local statement x= y=10 outside after calling f1 x=8 y= basicsys@mars~/lec12>cat P11 #!/bin/bash echo $1 $2 f1() { echo $1 $2 for x in "$@" do echo "$x" done } f1 f1 "20 30" 40 echo $1 $2 basicsys@mars~/lec12>P11 400 5 400 5 20 30 40 20 30 40 400 5 basicsys@mars~/lec12>cat P1 #!/bin/bash f1() { echo $[$1**2 + $2**2] y=$[$1**2 + $2**2] } f1 2 3 echo y=$y x=$(f1 3 4) echo x=$x echo y=$y echo "$(f1 6 7)" echo y=$y f1 8 9 echo y=$y basicsys@mars~/lec12>P1 13 y=13 x=25 y=13 85 y=13 145 y=145 basicsys@mars~/lec12>cat P1a #!/bin/bash f1() { echo $[$1**2 + $2**2] y=$[$1**2 + $2**2] f2 } f2(){ echo y inside f2=$y } f1 2 3 echo y=$y x=$(f1 3 4) echo x=$x echo y=$y echo "$(f1 6 7)" echo y=$y f1 8 9 echo y=$y basicsys@mars~/lec12>P1a 13 y inside f2=13 y=13 x=25 y inside f2=25 y=13 85 y inside f2=85 y=13 145 y inside f2=145 y=145 basicsys@mars~/lec12>cat P2 #!/bin/bash f1() { echo I am f1 in P2 } f1 basicsys@mars~/lec12>cat f1 #!/bin/bash echo "I am file f1" basicsys@mars~/lec12>P2 I am f1 in P2 basicsys@mars~/lec12>cat P21 #!/bin/bash f1() { echo I am f1 in P2 } f1 ./f1 f1 basicsys@mars~/lec12>P21 I am f1 in P2 I am file f1 I am f1 in P2