Sponsored Content
Top Forums Shell Programming and Scripting Strange behaviour of arrays in awk Post 302852447 by Scrutinizer on Wednesday 11th of September 2013 02:33:30 PM
Old 09-11-2013
That is standard awk behaviour, arrays are not declared. If you refer to a non-existing array element, it automatically creates it. It does not assign an empty value, but rather it creates an unitialized array element with an empty value.. To test the presence of an array element without creating it, you need the index in array expression.

As for the second part. No, not exactly because of the first condition, which makes that the second part gets executed for some of the lines in file1. Try:

Code:
FNR==NR { 
  if (/file1_l1/) code[$2] = 1
  next
}


Last edited by Scrutinizer; 09-11-2013 at 04:22 PM..
 

9 More Discussions You Might Find Interesting

1. Linux

/etc/passwd strange behaviour!

Hi there, first of all, here is my conf of a uname -a Linux SAMBA 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown on a fedora machine. Here is my problem: every once in a while, the line containing root disappears in the /etc/passwd, disabling all logging on my server. Any one have... (0 Replies)
Discussion started by: penguin-friend
0 Replies

2. Shell Programming and Scripting

A Strange Behaviour!!!

Can some-one give me a view to this : I have a directory in an unix server, having permissions r-xr-xr-x .This directory is basically a source directory. Now there is another directory basically the destination directory which has all the permissions. Note:I log in as not the owner,but user... (5 Replies)
Discussion started by: navojit dutta
5 Replies

3. UNIX for Advanced & Expert Users

Strange sed behaviour

$ echo a.bc | sed -e "s/\|/\\|/g" |a|.|b|c| $ Is the behavior of the sed statement expected ? Or is this a bug in sed ? OS details Linux 2.6.9-55.0.0.0.2.ELsmp #1 SMP Wed May 2 14:59:56 PDT 2007 i686 i686 i386 GNU/Linux (8 Replies)
Discussion started by: vino
8 Replies

4. UNIX for Dummies Questions & Answers

Strange Program behaviour

Had a strange thing going on with my code. It's ok I figured it out for myself.... (2 Replies)
Discussion started by: mrpugster
2 Replies

5. Shell Programming and Scripting

strange behaviour from sed???

Hi all, I want to do a very simple thing with sed. I want to print out the line number of a disk I have defined in /etc/exports, so I do: It's all good, but here's the problem. When I define md0 in a variable, I get nothing from sed: Why is that? can anybody please help? Thanks (2 Replies)
Discussion started by: alirezan
2 Replies

6. HP-UX

Strange login behaviour

Hi all, I am using HP-UX and I have just noticed that when I log into the network it seems to save the previous windows that were subsequently closed on previous occasions. Does anyone know when I log in, it seems to display these previous windows, e.g. nedit windows open again? Does... (1 Reply)
Discussion started by: cyberfrog
1 Replies

7. Red Hat

Crontab strange behaviour

Hi all, I'm having this scenario which for the moment I cannot resolve. :( I wrote a script to make a dump/export of the oracle database. and then put this entry on crontab to be executed daily for example. The script is like below: cat /home/oracle/scripts/db_backup.sh #!/bin/ksh ... (3 Replies)
Discussion started by: enux
3 Replies

8. UNIX for Dummies Questions & Answers

Strange behaviour when output to terminal vs file (awk)

Hi all ! I noticed something very weird. I have a large pipe delimited file (20 fields/3,000 records) that looks like that: AAA|BBB|11111|22222|...|($NF of record 1) CCC|DDD|33333|44444|...|($NF of record 2) CCC|DDD|55555|66666|...|($NF of record 3) For the lines with same 1st and 2nd... (3 Replies)
Discussion started by: beca123456
3 Replies

9. Shell Programming and Scripting

awk Strange behaviour in AIX

Can someone please explain the strange behaviour.. I was just trying a few things to learn awk.. in the below code when I start the braces in the same line, the output is as expected, when I start at next line, output is displayed twice. Please see the file, code I tried and output below. ... (2 Replies)
Discussion started by: Kulasekar
2 Replies
Tree::Simple::Visitor::FromNestedArray(3pm)		User Contributed Perl Documentation	       Tree::Simple::Visitor::FromNestedArray(3pm)

NAME
Tree::Simple::Visitor::FromNestedArray - A Visitor for creating Tree::Simple objects from nested array trees. SYNOPSIS
use Tree::Simple::Visitor::FromNestedArray; my $visitor = Tree::Simple::Visitor::FromNestedArray->new(); # given this nested array tree my $array_tree = [ 'Root', [ 'Child1', [ 'GrandChild1', 'GrandChild2' ], 'Child2' ] ]; # set the array tree we # are going to convert $visitor->setArrayTree($array_tree); $tree->accept($visitor); # this then creates the equivalent Tree::Simple object: # Tree::Simple->new("Root") # ->addChildren( # Tree::Simple->new("Child1") # ->addChildren( # Tree::Simple->new("GrandChild1"), # Tree::Simple->new("GrandChild2") # ), # Tree::Simple->new("Child2"), # ); DESCRIPTION
Given a tree constructed from nested arrays, this Visitor will create the equivalent Tree::Simple heirarchy. METHODS
new There are no arguments to the constructor the object will be in its default state. You can use the "setNodeFilter", "includTrunk" and "setArrayTree" methods to customize its behavior. includTrunk ($boolean) Setting the $boolean value to true(1) will cause the node value of the $tree object passed into "visit" to be set with the root value found in the $array_tree. Setting it to false(0), or not setting it, will result in the first value in the $array_tree creating a new node level. setNodeFilter ($filter_function) This method accepts a CODE reference as its $filter_function argument and throws an exception if it is not a code reference. This code reference is used to filter the tree nodes as they are created, the $filter_function is passed the node value extracted from the array prior to it being inserted into the tree being built. The $filter_function is expected to return the value desired for inclusion into the tree. setArrayTree ($array_tree) This method is used to set the $array_tree that our Tree::Simple heirarchy will be constructed from. It must be in the following form: [ 'Root', [ 'Child1', [ 'GrandChild1', 'GrandChild2' ], 'Child2' ] ] Basically each element in the array is considered a node, unless it is an array reference, in which case it is interpreted as containing the children of the node created from the previous element in the array. The tree is validated prior being accepted, if it fails validation an execption will be thrown. The rules are as follows; The array tree must not be empty. It makes not sense to create a tree out of nothing, so it is assumed that this is a sign of something wrong. All nodes of the array tree must not be array references. The root node is validated against this in this function, but all subsequent nodes are checked as the tree is built. Any nodes found to be array references are rejected and an exception is thrown. If you desire your node values to be array references, you can use the node filtering mechanism to acheive this as the node is filtered after it is validated. The array tree must be a single rooted tree. If there is a second element in the array tree, it is assumed to be the children of the root, and therefore must be in the form of an array reference. visit ($tree) This is the method that is used by Tree::Simple's "accept" method. It can also be used on its own, it requires the $tree argument to be a Tree::Simple object (or derived from a Tree::Simple object), and will throw and exception otherwise. BUGS
None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. CODE COVERAGE
See the CODE COVERAGE section in Tree::Simple::VisitorFactory for more inforamtion. SEE ALSO
These Visitor classes are all subclasses of Tree::Simple::Visitor, which can be found in the Tree::Simple module, you should refer to that module for more information. AUTHOR
stevan little, <stevan@iinteractive.com> COPYRIGHT AND LICENSE
Copyright 2004, 2005 by Infinity Interactive, Inc. <http://www.iinteractive.com> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.10.1 2005-07-14 Tree::Simple::Visitor::FromNestedArray(3pm)
All times are GMT -4. The time now is 03:56 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy