Sponsored Content
Top Forums Shell Programming and Scripting Awk: Dealing with whitespace in associative array indicies Post 302942734 by Michael Stora on Thursday 30th of April 2015 10:01:51 PM
Old 04-30-2015
Awk: Dealing with whitespace in associative array indicies

Is there a reliable way to deal with whitespace in array indicies?

I am trying to annotate fails in a database using a table of known fails.

In a begin block I have code like this:
Code:
# Read in Known Fail List
getline < "'"$failListFile"'"; getline < "'"$failListFile"'"; getline < "'"$failListFile"'" # Header Rows
while (getline < "'"$failListFile"'") { split( $0, a, ","); failMessage[a[1]a[2]a[3]a[4]a[5]]=a[8] }
close("'"$failListFile"'")

And in the main part, code like this:
Code:
if ( $10 > limit) { $12 = "Fail"; if ( $2$3$4$5$9 in failMessage)
                                      { $12 = "Known Fail"; if ($7 == "\"\"") gsub ( "\"$", "Known Fail: "failMessage[$2$3$4$5$9]"\"", $7 )
                                                            else gsub ( "\"$", "|Known Fail: "failMessage[$2$3$4$5$9]"\"", $7 ) } }
else $12 = "Pass"

$10 is a test value, $12 is pass/fail, $7 is a comment, $2-$5 are building, room, position in room, etc. Later in my code I translate "|" characters to new lines. Everything works fine except when some of my room names have whitespace.

Code:
$ echo | awk 'BEGIN { a[1]="abc"; if (1 in a) print "index exists"}'
index exists

$ echo | awk 'BEGIN { a[1]="abc"; if ("1" in a) print "index exists"}'
index exists

$ echo | awk 'BEGIN { a["1"]="abc"; if ("1" in a) print "index exists"}'
index exists

$ echo | awk 'BEGIN { a[contains whitespace]="abc"; if (contains whitespace in a) print "index exists"}'
index exists

$ echo | awk 'BEGIN { a[contains whitespace]="abc"; if (contains purplespace in a) print "index exists"}'
index exists FALSE POSITIVE

$ echo a b c | awk 'NR==1 { a[$1$2$3]="abc"; if ( "abc" in a ) { print "index exists"} }'
index exists

$ echo a b " c"| awk 'NR==1 { a[$1$2$3]="abc"; if ( "ab c" in a ) { print "index exists"} }'

$ echo a b " c"| awk 'NR==1 { a["$1$2$3"]="abc"; if ( "ab c" in a ) { print "index exists"} }'

Mike

Last edited by Michael Stora; 04-30-2015 at 11:30 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Associative Array

Hi, I am trying to make an associative array to use in a popup_menu on a website. Here is what i have: foreach $entr ( @entries ) { $temp_uid = $entr->get_value(uid); $temp_naam = $entr->get_value(sn); $s++; } This is the popup_menu i want to use it in. popup_menu(-name=>'modcon',... (4 Replies)
Discussion started by: tine
4 Replies

2. Shell Programming and Scripting

Perl: Sorting an associative array

Hi, When using sort on an associative array: foreach $key (sort(keys(%opalfabet))){ $value = $opalfabet{$key}; $result .= $value; } How does it handle double values? It seems to me that it removes them, is that true? If so, is there a way to get... (2 Replies)
Discussion started by: tine
2 Replies

3. Shell Programming and Scripting

Problem with lookup values on AWK associative array

I'm at wits end with this issue and my troubleshooting leads me to believe it is a problem with the file formatting of the array referenced by my script: awk -F, '{if (NR==FNR) {a=$4","$3","$2}\ else {print a "," $0}}' WBTSassignments1.txt RNCalarms.tmp On the WBTSassignments1.txt file... (2 Replies)
Discussion started by: JasonHamm
2 Replies

4. Shell Programming and Scripting

awk, associative array, compare files

i have a file like this < '393200103052';'H3G';'20081204' < '393200103059';'TIM';'20110111' < '393200103061';'TIM';'20060206' < '393200103064';'OPI';'20110623' > '393200103052';'HKG';'20081204' > '393200103056';'TIM';'20110111' > '393200103088';'TIM';'20060206' Now i have to generate a file... (9 Replies)
Discussion started by: shruthi123
9 Replies

5. Shell Programming and Scripting

Help needed on Associative array in awk

Hi All, I got stuck up with shell script where i use awk. The scenario which i am working on is as below. I have a file text.txt with contents COL1 COL2 COL3 COL4 1 A 500 400 1 B 500 400 1 A 500 200 2 A 290 300 2 B 290 280 3 C 100 100 I could able to sum col 3 and col4 based on... (3 Replies)
Discussion started by: imsularif
3 Replies

6. Shell Programming and Scripting

Associative array

I have an associative array named table declare -A table table="fruit" table="veggie" table="GT" table="eminem" Now say I have a variable returning the value highway How do I find corresponding value GT ?? (this value that I find (GT in this case) is supposed to be the name of a mysql... (1 Reply)
Discussion started by: leghorn
1 Replies

7. Shell Programming and Scripting

Associative Array with more than one item per entry

Hi all I have a problem where i have a large list ( up to 1000 of items) and need to have 2 items pulled from it into variables in a bash script my list is like the following and I could have it as an array or possibly an external text file maintained separately. Every line is different and... (6 Replies)
Discussion started by: kcpoole
6 Replies

8. Shell Programming and Scripting

Morse Code with Associative Array

Continuing my quest to learn BASH, Bourne, Awk, Grep, etc. on my own through the use of a few books. I've come to an exercise that has me absolutely stumped. The specifics: 1. Using ONLY BASH scripting commands (not sed, awk, etc.), write a script to convert a string on the command line to... (22 Replies)
Discussion started by: ksmarine1980
22 Replies

9. Shell Programming and Scripting

Using associative array for comparison

Hello together, i make something wrong... I want an array that contains information to associate it for further processing. Here is something from my bash... You will know, what I'm trying to do. I have to point out in advance, that the variable $SYSOS is changing and not as static as in my... (2 Replies)
Discussion started by: Decstasy
2 Replies

10. UNIX for Beginners Questions & Answers

awk Associative Array and/or Referring to Field by String (Nonconstant String Value)

I will start with an example of what I'm trying to do and then describe how I am approaching the issue. File PS028,005 Lexeme HRS # M # PhraseType 1(1:1) 7(7) PhraseLab 501 503 ClauseType ZYq0 PS028,005 Lexeme W # L> # BNH # M #... (17 Replies)
Discussion started by: jvoot
17 Replies
GMP_SETBIT(3)								 1							     GMP_SETBIT(3)

gmp_setbit - Set bit

SYNOPSIS
void gmp_setbit (GMP &$a, int $index, [bool $bit_on = true]) DESCRIPTION
Sets bit $index in $a. PARAMETERS
o $a - The value to modify. Either a GMP number resource in PHP 5.5 and earlier, a GMP object in PHP 5.6 and later, or a numeric string provided that it is possible to convert the latter to a number. o $index - The index of the bit to set. Index 0 represents the least significant bit. o $bit_on - True to set the bit (set it to 1/on); false to clear the bit (set it to 0/off). RETURN VALUES
A GMP number resource in PHP 5.5 and earlier, or a GMP object in PHP 5.6 and later. EXAMPLES
Example #1 gmp_setbit(3) example - 0 index <?php $a = gmp_init("2"); // echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), " "; gmp_setbit($a, 0); // 0b10 now becomes 0b11 echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), " "; ?> The above example will output: 2 -> 0b10 3 -> 0b11 Example #2 gmp_setbit(3) example - 1 index <?php $a = gmp_init("0xfd"); echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), " "; gmp_setbit($a, 1); // index starts at 0 echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), " "; ?> The above example will output: 253 -> 0b11111101 255 -> 0b11111111 Example #3 gmp_setbit(3) example - clearing a bit <?php $a = gmp_init("0xff"); echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), " "; gmp_setbit($a, 0, false); // clear bit at index 0 echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), " "; ?> The above example will output: 255 -> 0b11111111 254 -> 0b11111110 NOTES
Note Unlike most of the other GMP functions, gmp_setbit(3) must be called with a GMP resource that already exists (using gmp_init(3) for example). One will not be automatically created. SEE ALSO
gmp_clrbit(3), gmp_testbit(3). PHP Documentation Group GMP_SETBIT(3)
All times are GMT -4. The time now is 11:22 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy