Sponsored Content
Top Forums Shell Programming and Scripting Suggestions for command line parsing Post 302825591 by steadyonabix on Monday 24th of June 2013 05:51:14 PM
Old 06-24-2013
Thanks for the perl examples.

I need to pull this off in bash so I can't use them but they certainly look powerful. The last example being particularly compact...

Cheers

---------- Post updated at 10:35 PM ---------- Previous update was at 10:21 PM ----------

this is the best I have managed to come up with. Doesn't handle negative numbers but that was never in my original requirement -

Code:
#! /bin/bash

error_exit()
{
    echo $1
    exit 1
}

expand_range()
{
    [[ $@ =~ ^[0-9]*-[0-9]*$ ]] || error_exit "Usage: args ${FUNCNAME}"
    local LA=${1#*-} FA=${1%-*}
    local TEST="\(\(FA++\)\) -lt \${LA}"
    [[ ${FA} -gt ${LA} ]] && TEST="\(\(FA--\)\) -gt \${LA}"

    OUT="${OUT},${FA}"
    while eval [[ ${TEST} ]]
    do
        OUT="${OUT},${FA}"
    done
}

parse_line()
{
    [[ $@ =~ ^[0-9]+[0-9,-]*[0-9-]+$ ]] || error_exit "Usage: args ${FUNCNAME}"
    OUT=
    for SEG in $(echo $@ | awk 1 RS=",")
    do
        if [[ ${SEG} =~ ^[0-9]*-[0-9]*$ ]]
        then
            expand_range ${SEG}
        else
            OUT="${OUT},${SEG}"
        fi
    done
    echo ${OUT#,*}
}

parse_line 2,15-9,3,5-8,1

Output -

Code:
2,15,14,13,12,11,10,9,3,5,6,7,8,1

---------- Post updated at 10:51 PM ---------- Previous update was at 10:35 PM ----------

Well I'm glad to see so many people enjoying the problem as much as I am .. Smilie
 

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
SPLIT(1)								FSF								  SPLIT(1)

NAME
split - split a file into pieces SYNOPSIS
split [OPTION] [INPUT [PREFIX]] DESCRIPTION
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default PREFIX is `x'. With no INPUT, or when INPUT is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -a, --suffix-length=N use suffixes of length N (default 2) -b, --bytes=SIZE put SIZE bytes per output file -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file -l, --lines=NUMBER put NUMBER lines per output file --verbose print a diagnostic to standard error just before each output file is opened --help display this help and exit --version output version information and exit SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg. AUTHOR
Written by Torbjorn Granlund and Richard M. Stallman. REPORTING BUGS
Report bugs to <bug-coreutils@gnu.org>. COPYRIGHT
Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU- LAR PURPOSE. SEE ALSO
The full documentation for split is maintained as a Texinfo manual. If the info and split programs are properly installed at your site, the command info split should give you access to the complete manual. split (coreutils) 4.5.3 February 2003 SPLIT(1)
All times are GMT -4. The time now is 07:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy