![]() |
|
|
|
|
|||||||
| UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !! |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Question on Regular Expression | Katkota | UNIX for Dummies Questions & Answers | 14 | 05-18-2008 02:11 PM |
| question (regular expression related) | metalwarrior | UNIX for Dummies Questions & Answers | 1 | 02-03-2008 07:51 PM |
| Regular expression question | umen | Shell Programming and Scripting | 7 | 11-21-2007 05:45 PM |
| Regular Expression Question | Krispy | UNIX for Dummies Questions & Answers | 3 | 01-20-2006 06:36 AM |
| question about regular expression | brentdeback | Shell Programming and Scripting | 0 | 11-14-2005 12:04 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
|||
|
Folks;
I have 3 questions & any help with them would be really appreciated: If i have a list of directories, for example: /fs/pas/2007/4/6/2634210/admdat/examin /fs/pas/2007/4/6/2634210/admdat2/stat /fs/pas/2007/4/6/2634210/admdat3/data /fs/pas/2007/4/6/2634210/im_2/0b.dcm Now; my questions are: 1. How to use RE to extract the last file such as "examin and stat,..."? 2. How to use RE to extract the parent directory for the last file. such as "amdat, amdat2, im_2,..."? 3. How to use RE to extract the date in the middle "2007/4/6"? |
| Forum Sponsor | ||
|
|
|
|||
|
Are we talking Perl or grep or something else here? There are many different regex flavors and the matching strategy would also depend on what infrastructure is available in the tool.
For Perl, something like m%/(\d{4}/\d{1,2}/\d{1,2})/\d+/([^/]+)/([^/]+)$% would get the substrings you request into $3, $2, and $1, respectively. Last edited by era; 05-14-2008 at 11:58 AM. Reason: Add m%...% wrapper |
|
|||
|
grep normally returns the entire matching line anyway.
The regular expression should work with grep as such, if you make a few minor substitutions. \d is a Perlism, replace with [0-9]. {4} is an egrep-ism, although POSIX grep has it in some form, too (maybe with backslashes before the braces); or you can simply put the required number of repetitions. You will be hard pressed to find a situation where you can get exactly only the required parts out of grep, though. [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] and [^/]*$ will still work, but the penultimate directory I don't think you can get without passing through sed or some such. |
|
|||
|
If including the last directory component as well is acceptable then you can do [^/]*/[^/]*$ to get the last and the penultimate directory (#1 and half #2) and then if you trim #1 and the last slash, you get the real answer for #2.
*? is certainly not a plain old grep regular expression. What's the point of this exercise? |
| Thread Tools | |
| Display Modes | |
|
|