Suggestions for command line parsing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Suggestions for command line parsing
# 8  
Old 06-25-2013
bash only (without external programs, i.e. awk, paste, sed etc.):

Code:
_expand() {
  local _s=$1 _q=${2:-,} _n IFS
  [[ $_s =~ [^$_q-[:digit:]]+ ]] && return 1 
  IFS=$_q read -a _a <<< "$_s" 
  for ((i = 0; i < ${#_a[@]}; i++)); do
    [[ ${_a[i]} =~ (-?[[:digit:]]+)-(-?[[:digit:]]+) ]] && 
      ((${BASH_REMATCH[1]} < ${BASH_REMATCH[2]})) &&
      for (( j = ${BASH_REMATCH[1]}; j <= ${BASH_REMATCH[2]}; j++)); do
        _n+=( $j ) || _n+=( ${_a[i]} )
      done ||
        for (( j = ${BASH_REMATCH[1]}; j >= ${BASH_REMATCH[2]}; j--)); do
        _n+=( $j ) || _n+=( ${_a[i]} )
      done
  done
  IFS=$_q; printf "%s\n" "${_n[*]}"
  }

Code:
$ _expand 9-12,19-15,20-20,0--5,-1-2,-5--1
9,10,11,12,19,18,17,16,15,20,0,-1,-2,-3,-4,-5,-1,0,1,2,-5,-4,-3,-2,-1

You may use a custom separator (the default is ,):
Code:
$ _expand 9-12:19-15:20-20:0--5:-1-2:-5--1 :
9:10:11:12:19:18:17:16:15:20:0:-1:-2:-3:-4:-5:-1:0:1:2:-5:-4:-3:-2:-1

The regular expression operator `=~', the add/append operator `+=' and the here-strings syntax `<<<', are version specific (old bash versions don't support them).

Last edited by radoulov; 06-25-2013 at 07:34 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
Login or Register to Ask a Question