Sponsored Content
Top Forums Shell Programming and Scripting affect a exploded a string into an array Post 302113422 by cfajohnson on Thursday 5th of April 2007 10:23:24 PM
Old 04-05-2007
Quote:
Originally Posted by ripat
I would like to affect an exploded string into an array.
Code:
one:two::four

into an array:
Code:
a[0] => one
a[1] => two
a[2] =>
a[3] => four

Quite simple in other languages with functions like explode() or split().

The best I could come up with was this:
Code:
until [ "$token" =  "$string" ]
do
        token=${string%%:*}    # takes the first token
        a[$i]=$token           # affects the token to the array element
        string=${string#*:}    # chops that token from the string
        ((i++))
done

This return what I was looking for but I find it quite heavy for something basic.

I also tried:
Code:
a=($(echo $string | nawk -F":" '{$1=$1; print}'))

But this skips the empty tokens as it returns
Code:
a[0] => one
a[1] => two
a[2] => four

Anything more simple for such a basic thing?

In bash or ksh93:

Code:
string=one:two::four
oldIFS=$IFS
IFS=:
a=( $string )
IFS=$oldIFS

In any POSIX shell:

Code:
string=one:two::four
unset a
while :
do
  case $string in
     *:*) a[${#a[@]}]=${string%%:*}
             string=${string#*:}
             ;;
     *) a[${#a[@]}]=${string%%:*}
         break ;;
  esac
done


 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

string to array

Hi Experts, I'm new to Shell Scripting world and need a little help from you "Scripting Gurus". I want to convert a string (entered by a user) to array in csh. I want something like this: echo "Enter the Numbers: " set num = $< Suppose, user enters: 1 2 3 4 5 6 7 This... (6 Replies)
Discussion started by: sumitgarg
6 Replies

2. UNIX for Advanced & Expert Users

changig uid and the affect it will have

Hello, I have 2 sun servers. We are running Oracle apps. We have to apply patches to both servers whenever a patch needs to be applied for Oracle. We use the same username eg. applmgr on both servers. We have a shared patch area which we can run the patch from on both boxes. the uid for... (2 Replies)
Discussion started by: d__browne
2 Replies

3. Solaris

making new default gateway take affect

How do you make the changes take affect when you change the subnet masks or default router without rebooting? (1 Reply)
Discussion started by: BG_JrAdmin
1 Replies

4. Shell Programming and Scripting

affect variable

hi , i want to store variable but i get always error when i excute this command ligne : var = awk '{print $1}' file1 echo $var how can i store the var? thanks (7 Replies)
Discussion started by: kamel.seg
7 Replies

5. Solaris

Will Password change affect authorized_keys?

Hello gurus, I have question. I have enabled ssh on the servers. I am planning to change the oracle user's(os user) password. If I change the password will it affect the authorized_keys? Do I need to regenerate it. Thanks, (2 Replies)
Discussion started by: oracleuser
2 Replies

6. UNIX for Dummies Questions & Answers

.profile - changes don't affect the login

I have modified the .profile in my profile and I don't see any effect. Why the changes don't have effect? I tried both on the account at a server where I have limited permissions as user and to my local pc (as user). Is it the .profile overridden by some other file? It looks weird because I... (8 Replies)
Discussion started by: myle
8 Replies

7. Shell Programming and Scripting

PERL : Read an array and write to another array with intial string pattern checks

I have an array and two variables as below, I need to check if $datevar is present in $filename. If so, i need to replace $filename with the values in the array. I need the output inside an ARRAY How can this be done. Any help will be appreciated. Thanks in advance. (2 Replies)
Discussion started by: irudayaraj
2 Replies

8. Homework & Coursework Questions

passing letters from an array into a string for string comparison

attempting the hangman program. This was an optional assignment from the professor. I have completed the logical coding, debugging now. ##I have an array $wordString that initializes to a string of dashes ##reflecting the number of letters in $theWord ##every time the user enters a (valid)... (5 Replies)
Discussion started by: lotsofideas
5 Replies

9. UNIX and Linux Applications

Having too many connections could affect performance ?

Good evening, i need your help please I will try to describe the scenario briefly: In a Telecom Production system application receives a certain files called CDRs(call detail records) to be processed by doing some operating systems operations and then database operations like creating indexes... (4 Replies)
Discussion started by: alexcol
4 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
arybase(3pm)						 Perl Programmers Reference Guide					      arybase(3pm)

NAME
arybase - Set indexing base via $[ SYNOPSIS
$[ = 1; @a = qw(Sun Mon Tue Wed Thu Fri Sat); print $a[3], " "; # prints Tue DESCRIPTION
This module implements Perl's $[ variable. You should not use it directly. Assigning to $[ has the compile-time effect of making the assigned value, converted to an integer, the index of the first element in an array and the first character in a substring, within the enclosing lexical scope. It can be written with or without "local": $[ = 1; local $[ = 1; It only works if the assignment can be detected at compile time and the value assigned is constant. It affects the following operations: $array[$element] @array[@slice] $#array (list())[$slice] splice @array, $index, ... each @array keys @array index $string, $substring # return value is affected pos $string substr $string, $offset, ... As with the default base of 0, negative bases count from the end of the array or string, starting with -1. If $[ is a positive integer, indices from "$[-1" to 0 also count from the end. If $[ is negative (why would you do that, though?), indices from $[ to 0 count from the beginning of the string, but indices below $[ count from the end of the string as though the base were 0. Prior to Perl 5.16, indices from 0 to "$[-1" inclusive, for positive values of $[, behaved differently for different operations; negative indices equal to or greater than a negative $[ likewise behaved inconsistently. HISTORY
Before Perl 5, $[ was a global variable that affected all array indices and string offsets. Starting with Perl 5, it became a file-scoped compile-time directive, which could be made lexically-scoped with "local". "File-scoped" means that the $[ assignment could leak out of the block in which occurred: { $[ = 1; # ... array base is 1 here ... } # ... still 1, but not in other files ... In Perl 5.10, it became strictly lexical. The file-scoped behaviour was removed (perhaps inadvertently, but what's done is done). In Perl 5.16, the implementation was moved into this module, and out of the Perl core. The erratic behaviour that occurred with indices between -1 and $[ was made consistent between operations, and, for negative bases, indices from $[ to -1 inclusive were made consistent between operations. BUGS
Error messages that mention array indices use the 0-based index. "keys $arrayref" and "each $arrayref" do not respect the current value of $[. SEE ALSO
"$[" in perlvar, Array::Base and String::Base. perl v5.16.2 2012-10-11 arybase(3pm)
All times are GMT -4. The time now is 03:20 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy