Sponsored Content
Top Forums Shell Programming and Scripting Suggestions for command line parsing Post 302825427 by Fundix on Monday 24th of June 2013 11:53:15 AM
Old 06-24-2013
A Perl solution :
Code:
#!/usr/bin/perl -w
use strict;

my $cur_dir = $ENV{PWD};
my ($value,@values,@chars,@sep,$i,@ext,$idx);
my ($startVal,$endVal,$secNegFlg);

@values=split(/,/,$ARGV[0]);

foreach $value (@values) {
  $idx++;
  @chars=split(//,$value);
  @sep=grep{ $_ eq "-" } @chars;

  #one or more (3 max) "-" found -> range format (xx-xx) detected
  # define starting and ending values of range
  if ($#sep >= 0) {
    # if 1st char is -, first number of range is negative
    if ($chars[0] eq "-") { ($startVal) = $value =~ m/^(-\d+)/ }
      else { ($startVal) = $value =~ m/^(\d+)/ } ;

    # if -- found, second number of range is negative
    ($secNegFlg) = $value =~ m/(--\d+)$/;
    if( defined($secNegFlg) ) {  ($endVal) = $value =~ m/(-\d+)$/ }
      else { ($endVal) = $value =~ m/(\d+)$/ } ;
  }

  # Printing stage
  if ($#sep >= 0) {
    if ($startVal > $endVal) {
      for($i=$startVal; $i>=$endVal; $i--) {
        print "$i";
        print "," if( $i > $endVal);
      }
    } else {
      for($i=$startVal; $i<=$endVal; $i++) {
        print "$i";
        print "," if( $i < $endVal);
      }
    }
    print "," if( $idx <= $#values);
  } else {
    print "$value";
    print "," if( $idx <= $#values);
  }
}

print "\n";

Output :
Code:
 %./file034.pl 1,3-5,10,15-17,20,-25--22,0--3,-2-2

1,3,4,5,10,15,16,17,20,-25,-24,-23,-22,0,-1,-2,-3,-2,-1,0,1,2

 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Parsing the command line arguments

Is there a way to get the command line arguments. I am using getopt(3) but if the arguments are more than one for a particular option than it just ignores the second argument. For eg ./a.out -x abc def now abd will be got with -x using getopt "( x : )" and string abc\0def will get stored... (7 Replies)
Discussion started by: jayakhanna
7 Replies

2. UNIX for Dummies Questions & Answers

command line argument parsing

how to parse the command line argument to look for '@' sign and the following with '.'. In my shell script one of the argument passed is email address. I want to parse this email address to look for correct format. rmjoe123@hotmail.com has '@' sign and followed by a '.' to be more... (1 Reply)
Discussion started by: rmjoe
1 Replies

3. Shell Programming and Scripting

parsing command line switches in Perl

Hi, My perl script takes few switches which i'm parsing through GetOpt::Long module. My script looks like something : myscript.pl --file="foo" --or --file="bar" The --file switch takes 2 arguments foo and bar. The 2 values of file are separated by --or switch. I want to ensure that... (1 Reply)
Discussion started by: obelix
1 Replies

4. Shell Programming and Scripting

Help parsing command line arguments in bash

Looking for a little help parsing some command line arguments in a bash script I am working on, this is probably fairly basic to most, but I do not have much experience with it. At the command line, when the script is run, I need to make sure the argument passed is a file, it exists in the... (3 Replies)
Discussion started by: Breakology
3 Replies

5. Shell Programming and Scripting

Parsing a command line parameter in script

I have a simple script that builds a complex program call which passes a number of parameters to the program. I'm trying to enhance the script to include the value of the command line parameter in the name of a file being created. The problem I'm having is that the parameter may include a forward... (11 Replies)
Discussion started by: pbmax626
11 Replies

6. Programming

Parsing command line arguments in Python

Hi, I've a python script called aaa.py and passing an command line option " -a" to the script like, ./aaa.py -a & Inside the script if the -a option is given I do some operation if not something else. code looks like ./aaa.py -a . . if options.a ---some operation--- if not options.a... (1 Reply)
Discussion started by: testin
1 Replies

7. Shell Programming and Scripting

Parsing Command Line Arguments In C shell script

]I have a string like "/abc/cmind/def/pq/IC.2.4.6_main.64b/lnx86" and this string is given by user. But in this string instead of 64b user may passed 32 b an i need to parse this string and check wether its is 32b or 64 b and according to it i want to set appropriate flags. How will i do this... (11 Replies)
Discussion started by: codecatcher
11 Replies

8. Shell Programming and Scripting

awk command suggestions

I've defined the order of elements which needs to be print in a order in a variable. please let me know how can I use it in awk command ... (2 Replies)
Discussion started by: BrahmaNaiduA
2 Replies

9. Shell Programming and Scripting

Command Line Perl for parsing fasta file

I would like to take a fasta file formated like >0001 agttcgaggtcagaatt >0002 agttcgag >0003 ggtaacctga and use command line perl to move the all sample gt 8 in length to a new file. the result would be >0001 agttcgaggtcagaatt >0003 ggtaacctga cat ${sample}.fasta | perl -lane... (2 Replies)
Discussion started by: jdilts
2 Replies

10. Shell Programming and Scripting

Parsing XML using command line

Hi Experts, How do I parse a XML with below contents <saw:user name="mbussey@xyz.com" /> <saw:user name="kimmy.chan@pqr.com" /> <saw:user name="chudgins@gmail.com" /> and retrieve below output ? mbussey@xyz.com kimmy.chan@pqr.com chudgins@gmail.com ... (17 Replies)
Discussion started by: pauldx
17 Replies
STRTOK(3)						     Library Functions Manual							 STRTOK(3)

NAME
strtok - string tokens SYNOPSIS
#include <string.h> char * strtok(str, sep) char *str; char *sep; DESCRIPTION
This interface is obsoleted by strsep(3). The strtok() function is used to isolate sequential tokens in a null-terminated string, str . These tokens are separated in the string by at least one of the characters in sep . The first time that strtok() is called, str should be specified; subsequent calls, wishing to obtain further tokens from the same string, should pass a null pointer instead. The separator string, sep , must be supplied each time, and may change between calls. The strtok() function returns a pointer to the beginning of each subsequent token in the string, after replacing the token itself with a NUL character. When no more tokens remain, a null pointer is returned. SEE ALSO
index(3), memchr(3), rindex(3), strchr(3), strcspn(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3 STANDARDS
The strtok() function conforms to ANSI C X3.159-1989 (``ANSI C''). BUGS
There is no way to get tokens from multiple strings simultaneously. The System V strtok(), if handed a string containing only delimiter characters, will not alter the next starting point, so that a call to strtok() with a different (or empty) delimiter string may return a non-NULL value. Since this implementation always alters the next start- ing point, such a sequence of calls would always return NULL. 4.4 Berkeley Distribution January 12, 1996 STRTOK(3)
All times are GMT -4. The time now is 06:16 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy