Sponsored Content
Top Forums Programming how to put element of an array to first position. Post 302432748 by drl on Saturday 26th of June 2010 12:32:58 PM
Old 06-26-2010
Hi.

I was reading in Perl Best Practices - O'Reilly Media , and ran across a function first_index that resides in a recommended module, List::MoreUtils. Here are a few possibly-related ideas using such a function to identify an entry, then remove it to one end of the other of an array with the help of in-built functions splice. push, and unshift:
Code:
#!/usr/bin/env perl

# @(#) p1	Demonstrate list entry identification, movement.

use warnings;
use strict;
use List::MoreUtils qw( first_index );

my ( $debug, @a, @original, $t1, $t2 );
$debug = 1;
$debug = 0;

my ($want) = "cat";
@original = qw/ pig goat catastrophe cat dog turkey deer /;

@a = @original;

print "\n";
print " For simple string equality, \"cat\", constant, then variable:\n";
print "\n";
print " Constant, just to see a simple example:\n";
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ eq "cat" } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

unshift @a, $t2;
print "a (for unshift) is :@a:\n";

print "\n";
print " Now with variables, a more likely situation:\n";
@a = @original;
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ eq $want } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

unshift @a, $t2;
print "a (for unshift) is :@a:\n";

print "\n";
@a = @original;
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ eq $want } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

push @a, $t2;
print "a (for push   ) is :@a:\n";

print "\n";
@a = @original;
print "a (original   ) is :@a:\n";
unshift @a, splice( @a, ( first_index { $_ eq $want } @a ), 1 );

print "a (single line) is :@a:\n";

@a = @original;

print "\n";
print " For string match regular expression, /$want/:\n";
print "\n";
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ =~ m/$want/ } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

unshift @a, $t2;
print "a (for unshift) is :@a:\n";

exit(0);

producing:
Code:
% ./p1

 For simple string equality, "cat", constant, then variable:

 Constant, just to see a simple example:
a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for unshift) is :cat pig goat catastrophe dog turkey deer:

 Now with variables, a more likely situation:
a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for unshift) is :cat pig goat catastrophe dog turkey deer:

a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for push   ) is :pig goat catastrophe dog turkey deer cat:

a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (single line) is :cat pig goat catastrophe dog turkey deer:

 For string match regular expression, /cat/:

a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for unshift) is :catastrophe pig goat cat dog turkey deer:

cheers, drl
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

accessing my first element of array

Hello everyonel, I have an array set like so num=4 read name arr=name I go through while loop to assign different values to different array element from 1 to 4. when I try to access the FIRST element of the array I get the last one first. Like if I say ${arr} it will show the last element... (4 Replies)
Discussion started by: afadaghi
4 Replies

2. Shell Programming and Scripting

Shift array element

I want to delete and 0th element of array in shell scrpit and also shift all others to one level up. (2 Replies)
Discussion started by: darshakraut
2 Replies

3. Shell Programming and Scripting

How to put a word starting at particular position in a file using shell scripting

Hi all, I'm new to shell scripting and hence this query. I have 2 files. temp.txt and config.txt. The values in temp.txt are tab separated. ex: temp.txt AB CDE GHIJ OPQRS WXY ex:config.txt (1st line for 1st element of temp.txt and so on) start = '1' end='5' start = '6' end =... (26 Replies)
Discussion started by: subhrap.das
26 Replies

4. Shell Programming and Scripting

perl, put one array into many array when field is equal to sth

Hi Everyone, #!/usr/bin/perl use strict; use warnings; my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d"); would like to split the @test array into two array: @test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d"); means search for 3rd filed. Thanks find the... (0 Replies)
Discussion started by: jimmy_y
0 Replies

5. Shell Programming and Scripting

How to put count for first element in a file at the end

Hi, I have a file where I need to count the total for the first element and put it back at the end of file... here is the example... input.. FHDR|ABC|20100607| |ABC|8453|CDE|E166|||| 123|ABC|8453|CDE|E166|||| 123|ABC|8453|CDE|E166|||| 111|ABC|8453|CDE|E166||||... (8 Replies)
Discussion started by: donadarsh
8 Replies

6. Shell Programming and Scripting

remove an element from array

I need to remove an element from the below array variable TABLENAME. #!/bin/ksh set -A TABLENAME "mirf roxar keke mirs" echo "the array is ${TABLENAME}" If i need to remove say keke and have the final TABLENAME as below, how this could be achieved. Pls throw some light. echo "Modified... (3 Replies)
Discussion started by: michaelrozar17
3 Replies

7. Shell Programming and Scripting

Multiplying array element

I am trying to take all the elements of an array and multiply them by 2, and then copy them to a new array. Here is what I have i=0 for true in DMGLIST do let DMGSIZES2="${DMGSIZES}"*2 let i++ done unset i echo ${DMGSIZES2} It does the calculation correctly for the first element,... (7 Replies)
Discussion started by: nextyoyoma
7 Replies

8. Shell Programming and Scripting

Put words to fix position in a file

Hi all, There are several lines in my file as a=123,b=dene,c=2312,d=234234,g=vxcvxcv,h=44 a=3,b=dene,c=22,d=23422342334,g=vxcvxcv,h=4 a=123,b=dene,c=2312,d=234234,g=vxcvxcv,h=678 I take values with this command awk -F '' '{print $1,$2,$3}' a.txt I want to put values to a fix position... (6 Replies)
Discussion started by: bahadiraktan
6 Replies

9. UNIX for Advanced & Expert Users

Array Element

This question is for someone that's more familiar with Array Element. I need to know if the maximum array element that can be assigned is 1024 and if its so, Is there a workaround solution when the counter exceeded 1024? param_array="$param_nam" counter=$counter+1 #to avoid space... (3 Replies)
Discussion started by: cumeh1624
3 Replies

10. Shell Programming and Scripting

If test array element multiplication

Ya, I know, who in this day and age is mirroring rootvg...? But yes, my shop does and I need to script checking for it. I also know I could just inverse the the logic and call the LV mirrored if the LPs and PPs were not equal. But I want to do the math in the if test and also know I could... (5 Replies)
Discussion started by: gtsonoma
5 Replies
CAT(1)							    BSD General Commands Manual 						    CAT(1)

NAME
cat -- concatenate and print files SYNOPSIS
cat [-benstuv] [file ...] DESCRIPTION
The cat utility reads files sequentially, writing them to the standard output. The file operands are processed in command-line order. If file is a single dash ('-') or absent, cat reads from the standard input. If file is a UNIX domain socket, cat connects to it and then reads it until EOF. This complements the UNIX domain binding capability available in inetd(8). The options are as follows: -b Number the non-blank output lines, starting at 1. -e Display non-printing characters (see the -v option), and display a dollar sign ('$') at the end of each line. -n Number the output lines, starting at 1. -s Squeeze multiple adjacent empty lines, causing the output to be single spaced. -t Display non-printing characters (see the -v option), and display tab characters as '^I'. -u The -u option guarantees that the output is unbuffered. -v Display non-printing characters so they are visible. Control characters print as '^X' for control-X; the delete character (octal 0177) prints as '^?'. Non-ASCII characters (with the high bit set) are printed as 'M-' (for meta) followed by the character for the low 7 bits. DIAGNOSTICS
The cat utility exits 0 on success, and >0 if an error occurs. EXAMPLES
The command: cat file1 will print the contents of file1 to the standard output. The command: cat file1 file2 > file3 will sequentially print the contents of file1 and file2 to the file file3, truncating file3 if it already exists. See the manual page for your shell (i.e., sh(1)) for more information on redirection. The command: cat file1 - file2 - file3 will print the contents of file1, print data it receives from the standard input until it receives an EOF ('^D') character, print the con- tents of file2, read and output contents of the standard input again, then finally output the contents of file3. Note that if the standard input referred to a file, the second dash on the command-line would have no effect, since the entire contents of the file would have already been read and printed by cat when it encountered the first '-' operand. SEE ALSO
head(1), more(1), pr(1), sh(1), tail(1), vis(1), zcat(1), setbuf(3) Rob Pike, "UNIX Style, or cat -v Considered Harmful", USENIX Summer Conference Proceedings, 1983. STANDARDS
The cat utility is compliant with the IEEE Std 1003.2-1992 (``POSIX.2'') specification. The flags [-benstv] are extensions to the specification. HISTORY
A cat utility appeared in Version 1 AT&T UNIX. Dennis Ritchie designed and wrote the first man page. It appears to have been cat(1). BUGS
Because of the shell language mechanism used to perform output redirection, the command ``cat file1 file2 > file1'' will cause the original data in file1 to be destroyed! BSD
September 15, 2001 BSD
All times are GMT -4. The time now is 03:10 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy