Sponsored Content
Full Discussion: awk with many if statements
Top Forums Shell Programming and Scripting awk with many if statements Post 302856453 by Don Cragun on Tuesday 24th of September 2013 03:28:25 AM
Old 09-24-2013
Quote:
Originally Posted by Chubler_XL
Something like this might be a bit more readable and maintainable.

Code:
awk ' BEGIN {
  A[236,199, 32]=200
  A[236, 32,199]=200
  A[236,218, 32]=200
  A[236,237, 32]=200
  A[236,227, 32]=200
  A[236,225,222]=200
  A[236,229, 32]=200
  A[236,199,199]=200
  A[236,207, 32]=200
  A[236,237,209]=200
  A[236,207, 32]=200
  A[236,237,209]=200
  A[236,195, 32]=200
  A[236,199,227]=200
  A[236,228, 32]=200
  A[236,225, 32]=200
  A[236,202, 32]=200
  A[236, 32,218]=200
  A[236, 32,225]=200
  A[236,237,199]=200
  A[236,212, 32]=200
  A[236, 32,209]=200
  A[236, 32,237]=200
  A[236,230, 32]=200
  A[236, 32,210]=200
  A[236,222,199]=200
  A[236,199,230]=200
  A[236,207,218]=200
  A[236,225,225]=200
  A[236,211, 32]=200
  A[236,220,194]=203
  A[236,209,200]=203
}
{ A[++c] = $1 }
END {
   for(i=1;i<c;i++)
      if((A[i] SUBSEP A[i+1] SUBSEP A[i+2]) in B) A[i]=B[A[i],A[i+1],A[i+2]]
}

In the END clause, you reference arrays A[x], and B[w,x,y] but you never define B. I assume that you intended for all of the A[w,x,y]=z statements in the BEGIN clause to define the array B[] instead of A[].

Note also that (like the elif's in the original post in this thread) the lines in red duplicate the two lines before that.

To match the elif's in the original post, shouldn't:
Code:
      if((A[i] SUBSEP A[i+1] SUBSEP A[i+2]) in B) A[i]=B[A[i],A[i+1],A[i+2]]

be:
Code:
      if((A[i] SUBSEP A[i+1] SUBSEP A[i-1]) in B) A[i]=B[A[i],A[i+1],A[i-1]]

This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk compound statements

how can i use two or multiple statements in the if part of an awk code for example i want to check two flag if they are true i will write some print operations and increase the counter. here is the c version of the code that i want to write: counter=0; if (flag1==1 && flag2==0) {... (7 Replies)
Discussion started by: gfhgfnhhn
7 Replies

2. Shell Programming and Scripting

Help a newbie please with awk if else statements

Hi, Despite reading the Conditional Statements chapter in the O'Reilly Sed & Awk book several times and looking at numerous examples, I cannot for the life of me get any kind of if ... else statement to work in my awk scripts! My scripts work perfectly (as they are written at least) and do what... (4 Replies)
Discussion started by: jonathanm
4 Replies

3. Shell Programming and Scripting

Combine awk statements

I have an awk statement that works but I am calling awk twice and I know there has to be a way to combine the two statements into one. The purpose is to pull out just the ip address from loopback1. cat config.txt | nawk 'BEGIN {FS="\n"}{RS="!"}{if ( $0 ~ "interface loopback1" ) print$4}' | nawk... (5 Replies)
Discussion started by: numele
5 Replies

4. Shell Programming and Scripting

Combining awk statements

I have a pretty simple script below: #!/bin/sh for i in *.cfg do temp=`awk '/^InputDirectory=/' ${i}` input_dir=`echo ${temp} | awk '{ print substr( $0, 16) }'` echo ${input_dir} done As you can see its opening each cfg file and searching for the line that has "InputDirectory="... (3 Replies)
Discussion started by: ssbsts
3 Replies

5. Shell Programming and Scripting

Combining AWK statements

Hello UNIX Community, I have file that contains the following data: testAwk2.csv rabbit penguin goat giraffe emu ostrich hyena elephant panda dog cat pig lizard snake antelope platypus tiger cheetah lion rhino spider I then find the character length of the... (1 Reply)
Discussion started by: vnayak
1 Replies

6. UNIX for Dummies Questions & Answers

AWK w/ if statements failing.

I'm converting some code from ksh on my macbook (Version M 1993-12-28 s+) to an older solaris machine with ksh 88. I can't seem to figure out this line, it worked on the new shell version. set -A combo -- $(for x in ${ImageIDs}; do nawk -v s=$x 'if($2 == s) getline ; getline if ($1 ==... (2 Replies)
Discussion started by: nerdcurious
2 Replies

7. Shell Programming and Scripting

How to use awk or nawk by using Conditional Statements

Hi Guys! Anybody know how can I use a nawk or awk on a script and printing the NAME, SECTION (must be 410 or 411 or 414) and TOTAL COST of CLASS 1 and 3 combined must be greater than 50. See below desired output file. input.txt: NAME,CLASS,COST,SECTION JOHN,1,10,410 JOHN,2,20,410... (2 Replies)
Discussion started by: pinpe
2 Replies

8. UNIX for Dummies Questions & Answers

Combine two awk statements into one

Hi, I have the following two awk statements which I'd like to consolidate into one by piping the output from the first into the second awk statement (rather than having to write kat.txt out to a file and then reading back in). awk 'BEGIN {FS=OFS=" "} {printf("%s ", $2);for (x=7; x<=10;... (3 Replies)
Discussion started by: kasan0
3 Replies

9. Shell Programming and Scripting

awk problem - combining awk statements

i have a datafile that has several lines that look like this: 2,dataflow,Sun Mar 17 16:50:01 2013,1363539001,2990,excelsheet,660,mortar,660,4 using the following command: awk -F, '{$3=strftime("%a %b %d %T %Y,%s",$3)}1' OFS=, $DATAFILE | egrep -v "\-OLDISSUES," | ${AWK} "/${MONTH} ${DAY}... (7 Replies)
Discussion started by: SkySmart
7 Replies

10. Shell Programming and Scripting

Nested awk Statements

Hello again everyone, yes, I'm back again for more help! So I'm attempting to read two separate files and generate some XML code from that. My current code is: BEGIN { print "<?xml version=\"1.0\" encoding=\"utf-8\">" print "<Export>" } { x=1; print "<section name=\"Query" NR "\">"... (5 Replies)
Discussion started by: Parrakarry
5 Replies
iconv_852(5)						Standards, Environments, and Macros					      iconv_852(5)

NAME
iconv_852 - code set conversion tables for MS 852 (MS-DOS Latin 2) DESCRIPTION
The following code set conversions are supported: +--------------------------------------------------------------------+ | Code Set Conversions Supported | +--------------+--------+--------------+--------+--------------------+ | Code |Symbol |Target Code |Symbol | Target Output | +--------------+--------+--------------+--------+--------------------+ |MS 852 |dos2 |ISO 8859-2 |iso2 | ISO Latin 2 | +--------------+--------+--------------+--------+--------------------+ |MS 852 |dos2 |MS 1250 |win2 | Windows Latin 2 | +--------------+--------+--------------+--------+--------------------+ |MS 852 |dos2 |Mazovia |maz | Mazovia | +--------------+--------+--------------+--------+--------------------+ |MS 852 |dos2 |DHN |dhn | Dom Handlowy Nauki | +--------------+--------+--------------+--------+--------------------+ CONVERSIONS
The conversions are performed according to the following tables. All values in the tables are given in octal. MS 852 to ISO 8859-2 For the conversion of MS 852 to ISO 8859-2, all characters not in the following table are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | MS 852 | ISO 8859-2 | MS 852 | ISO 8859-2 | |24-177 | 40 |271-274 |40 | |200 | 307 |275 |257 | |201 | 374 |276 |277 | |202 | 351 |277-305 |40 | |203 | 342 |306 |303 | |204 | 344 |307 |343 | |205 | 371 |310-316 |40 | |206 | 346 |317 |244 | |207 | 347 |320 |360 | |210 | 263 |321 |320 | |211 | 353 |322 |317 | |212 | 325 |323 |313 | |213 | 365 |324 |357 | |214 | 356 |325 |322 | |215 | 254 |326 |315 | |216 | 304 |327 |316 | |217 | 306 |330 |354 | |220 | 311 |331-334 |40 | |221 | 305 |335 |336 | |222 | 345 |336 |331 | |223 | 364 |337 |40 | |224 | 366 |340 |323 | |225 | 245 |341 |337 | |226 | 265 |342 |324 | |227 | 246 |343 |321 | |230 | 266 |344 |361 | |231 | 326 |345 |362 | |232 | 334 |346 |251 | |233 | 253 |347 |271 | |234 | 273 |350 |300 | |235 | 243 |351 |332 | |236 | 327 |352 |340 | |237 | 350 |353 |333 | |240 | 341 |354 |375 | |241 | 355 |355 |335 | |242 | 363 |356 |376 | |243 | 372 |357 |264 | |244 | 241 |360 |255 | |245 | 261 |361 |275 | |246 | 256 |362 |262 | |247 | 276 |363 |267 | |250 | 312 |364 |242 | |251 | 352 |365 |247 | |252 | 40 |366 |367 | |253 | 274 |367 |270 | |254 | 310 |370 |260 | |255 | 272 |371 |250 | |256-264 | 40 |372 |377 | |265 | 301 |374 |330 | |266 | 302 |375 |370 | |267 | 314 |376 |40 | |270 | 252 | | | +---------------+----------------+----------------+---------------+ MS 852 to MS 1250 For the conversion of MS 852 to MS 1250, all characters not in the following table are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | MS 852 | MS 1250 | MS 852 | MS 1250 | |200 | 307 |270 |252 | |201 | 374 |271-274 |40 | |202 | 351 |275 |257 | |203 | 342 |276 |277 | |204 | 344 |277-305 |40 | |205 | 371 |306 |303 | |206 | 346 |307 |343 | |207 | 347 |310-316 |40 | |210 | 263 |317 |244 | |211 | 353 |320 |360 | |212 | 325 |321 |320 | |213 | 365 |322 |317 | |214 | 356 |323 |313 | |215 | 217 |324 |357 | |216 | 304 |325 |322 | |217 | 306 |326 |315 | |220 | 311 |327 |316 | |221 | 305 |330 |354 | |222 | 345 |331-334 |40 | |223 | 364 |335 |336 | |224 | 366 |336 |331 | |225 | 274 |337 |40 | |226 | 276 |340 |323 | |227 | 214 |341 |337 | |230 | 234 |342 |324 | |231 | 326 |343 |321 | |232 | 334 |344 |361 | |233 | 215 |345 |362 | |234 | 235 |346 |212 | |235 | 243 |347 |232 | |236 | 327 |350 |300 | |237 | 350 |351 |332 | |240 | 341 |352 |340 | |241 | 355 |353 |333 | |242 | 363 |354 |375 | |243 | 372 |355 |335 | |244 | 245 |356 |376 | |245 | 271 |357 |264 | |246 | 216 |360 |255 | |247 | 236 |361 |275 | |250 | 312 |362 |262 | |251 | 352 |363 |241 | |252 | 254 |364 |242 | |253 | 237 |365 |247 | |254 | 310 |366 |367 | |255 | 272 |367 |270 | |256 | 253 |370 |260 | |257 | 273 |371 |250 | |260-264 | 40 |372 |377 | |265 | 301 |374 |330 | |266 | 302 |375 |370 | |267 | 314 |376 |40 | +---------------+----------------+----------------+---------------+ MS 852 to Mazovia For the conversion of MS 852 to Mazovia, all characters not in the following table are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | MS 852 | Mazovia | MS 852 | Mazovia | |205 | 40 |246-247 |40 | |206 | 215 |250 |220 | |210 | 222 |251 |221 | |212-213 | 40 |253 |246 | |215 | 240 |254-270 |40 | |217 | 225 |275 |241 | |220-226 | 40 |276 |247 | |227 | 230 |306-336 |40 | |230 | 236 |340 |243 | |233-234 | 40 |342 |40 | |235 | 234 |343 |245 | |236-243 | 40 |344 |244 | |244 | 217 |345-375 |40 | |245 | 206 | | | +---------------+----------------+----------------+---------------+ MS 852 to DHN For the conversion of MS 852 to DHN, all characters not in the following table are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | MS 852 | DHN | MS 852 | DHN | |200-205 | 40 |244 |200 | |206 | 212 |245 |211 | |207 | 40 |246-247 |40 | |210 | 214 |250 |202 | |211-214 | 40 |251 |213 | |215 | 207 |253 |220 | |216 | 40 |254-270 |40 | |217 | 201 |275 |210 | |220-226 | 40 |276 |221 | |227 | 206 |306-336 |40 | |230 | 217 |340 |205 | |233-234 | 40 |342 |40 | |235 | 203 |343 |204 | |236-237 | 40 |344 |215 | |242 | 216 |345-375 |40 | |252 | 254 | | | +---------------+----------------+----------------+---------------+ FILES
/usr/lib/iconv/*.so conversion modules /usr/lib/iconv/*.t conversion tables /usr/lib/iconv/iconv_data list of conversions supported by conversion tables SEE ALSO
iconv(1), iconv(3C), iconv(5) SunOS 5.10 18 Apr 1997 iconv_852(5)
All times are GMT -4. The time now is 03:25 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy