![]() |
|
|
|||||||
| Home | Forums | Register | Rules & FAQ | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. Shell Script Page. |
Other UNIX.COM Threads You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Parse String Using Sed | racbern | Shell Programming and Scripting | 4 | 04-23-2008 09:14 AM |
| how to parse this string | hcliff | Shell Programming and Scripting | 13 | 04-02-2008 01:43 AM |
| String parse question | mnreferee | Shell Programming and Scripting | 5 | 03-06-2007 08:30 PM |
| parse a string variable | methos | Shell Programming and Scripting | 3 | 10-18-2005 01:18 PM |
| How to parse a string into variables | aquimby | Shell Programming and Scripting | 3 | 02-22-2005 05:37 AM |
![]() |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
|||
|
How to parse a string efficiently
I am new to the boards and to shell programming and have a requirement to name new files received with a unique sequence number. I need to look at a particular file pattern that exists and then to increment a sequence by 1 and write the new file.
Example of file names and sequence # part1_part2_part3_datesequence.dat or part1_part2_part3_part4_datesequence.dat the sequence is a 6 digit right justified 0 filled number attached to the date - 20080501000001.dat, but may be the 4th, 5th, 6th or 7th token of the filename. I have a script that creates the new files, but I am having trouble with how to efficiently extract the sequence number in order to increment it by 1 for a given file pattern and date and then write the new file. Any help would be appreciated and I am trying to stay with shell or sed or awk as I do not have access to perl. thanks! Mike |
| Forum Sponsor | ||
|
|
|
|||
|
one way:
Code:
#!bin/ksh
file="20080501000001.dat"
echo ${file%%.dat} | read seq
len=`expr length $seq`
let start=$len-14
seq=`expr $seq $start 14`
typeset -i num
echo ${seq##????????} | read num
echo $num
Last edited by jim mcnamara : 05-13-2008 at 07:49 AM. |
|
|||
|
Jim
Could you please breakdown how this works? I am changing up how I return the filenames and it is now not working. I am using an ls -a and get a fully qualified path, but your code above does not seem to handle this. Thanks! Mike |
|
|||
|
I just used your example filenames.
Code:
# this line was file="20080501000001.dat" ls -rt part1_*`date "+%Y%m%d`*.dat | tail -1 read file Assuming I got your requirements. |
|||
| Google UNIX.COM |