Visit Our UNIX and Linux User Community


Fetching just the matching pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Fetching just the matching pattern
# 1  
Old 08-06-2009
Question Fetching just the matching pattern

Hi Everybody,

I would like you to help me with the following problem.

Given is a path to a file like this:

/root/DIR/subdir/file.dat

Having this path I would like to grep/sed or whatever the directory string
that matches the following pattern '[A-Z][A-Z][A-Z]'.

I just need the matching directory string not the whole line.

f.ex. Let's assume I am in the mentioned directory "subdir"

pwd | grep '[A-Z][A-Z][A-Z]'

---> this command prints the full path but I just need the DIR part, because it matches my pattern

! the option -o doesn't exist on my machine

Your help would be very much appreciated.

Thanks in advance,

hoschi
# 2  
Old 08-06-2009
you can use sed search and replace to just print the match, you just have to put the pattern in parentheses, and then reference the match in the replace part with a \1

Code:
pwd | sed 's/.*\(pattern\).*/\1/'

the ugly part is that you have to escape the parentheses with backslashes.

There is probably a better way, but this is short, and works like a charm
# 3  
Old 08-06-2009
Thanks for your reply.

I assume sed is starting to look for the pattern from the beginning of the
input stream. How can I make sure that just the first occurrence of the searched pattern is being printed?

f.ex. input stream would be something like

/root/FIRSTMATCH/subdir/SECONDMATCH

Thanks in advance,

hoschi
# 4  
Old 08-07-2009
Quote:
Originally Posted by hhoosscchhii
...
How can I make sure that just the first occurrence of the searched pattern is being printed?

f.ex. input stream would be something like

/root/FIRSTMATCH/subdir/SECONDMATCH

...
But there aren't any multiple occurrences in your input stream.

"FIRSTMATCH" occurs only once, and "SECONDMATCH" occurs once as well. They are two different strings.

tyler_durden
# 5  
Old 08-07-2009
Hope this will be helpful for you.

Code:
$ echo /root/DIR/subdir/DIR/file.dat|grep -o "[A-Z][A-Z][A-Z]"|head -1
DIR

Regards,

Ranjith
# 6  
Old 08-10-2009
Thanks ranjithpr, but as I stated in my very first comment. The grep version I am using doesn't provide me with an "o" option, otherwise I would have used it.

---------- Post updated at 10:14 AM ---------- Previous update was at 10:06 AM ----------

I found a nice solution for my problem:

Variable=`echo ${listofdirectories} | grep data | awk -F"/" '{print $5}' | cut -d"/" -f1`

Previous Thread | Next Thread
Test Your Knowledge in Computers #542
Difficulty: Medium
A globally scoped variable is invalid throughout the entire program.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Grep -v lines starting with pattern 1 and not matching pattern 2

Hi all! Thanks for taking the time to view this! I want to grep out all lines of a file that starts with pattern 1 but also does not match with the second pattern. Example: Drink a soda Eat a banana Eat multiple bananas Drink an apple juice Eat an apple Eat multiple apples I... (8 Replies)
Discussion started by: demmel
8 Replies

2. Shell Programming and Scripting

Fetching a line matching a pattern

Hi Gurus, I have a file as follows (Sample shown below but the list is very huge) SCHEDULE WS1#JS1 RUNCYCLE1 : WS1#JOB1 WS1#JOB2 FOLLOWS JOB1 END SCHEDULE WS2#JS1 RUNCYCLE2 : WS1#JOB3 WS1#JOB1 FOLLOWS JOB3 WS2#JOB1 (10 Replies)
Discussion started by: jayadanabalan
10 Replies

3. Shell Programming and Scripting

PHP - Regex for matching string containing pattern but without pattern itself

The sample file: dept1: user1,user2,user3 dept2: user4,user5,user6 dept3: user7,user8,user9 I want to match by '/^dept2.*/' but don't want to have substring 'dept2:' in output. How to compose such regex? (8 Replies)
Discussion started by: urello
8 Replies

4. Shell Programming and Scripting

Sed: printing lines AFTER pattern matching EXCLUDING the line containing the pattern

'Hi I'm using the following code to extract the lines(and redirect them to a txt file) after the pattern match. But the output is inclusive of the line with pattern match. Which option is to be used to exclude the line containing the pattern? sed -n '/Conn.*User/,$p' > consumers.txt (11 Replies)
Discussion started by: essem
11 Replies

5. UNIX for Dummies Questions & Answers

Find pattern suffix matching pattern

Hi, I am trying to get a result out of this but fails please help. Have two files /tmp/1 & /tmp/hosts. /tmp/1 IP=123.456.789.01 WAS_HOSTNAME=abcdefgh.was.tb.dsdc /tmp/hosts 123.456.789.01 I want this result in /tmp/hosts if hostname is already there dont want duplicate entry. ... (5 Replies)
Discussion started by: rajeshwebspere
5 Replies

6. Shell Programming and Scripting

Fetching string after matching pattern from last

I have a file a file having entries are like @ram@sham@sita @krishan@kumar @deep@kumar@hello@sham in this file all line are having different no of pattern-@. need to fetch the substring after the last pattern. like sita kumar sham thanks in advance (3 Replies)
Discussion started by: saluja.deepak
3 Replies

7. Shell Programming and Scripting

Shell Scripting:Fetching content from each line with respect to pattern.

one.txt ONS.820.log:V 20Oct2010:GP ^ ^ ONS.123.log:V 21Oct2010:GP ^ ^ ONS.820.log:V 30Oct2010:GP ^ ^ want to make new file from existing one with addition. 20Oct2010 User KV001 has name tk003 with buffer- 338-1 21Oct2010 User KV003 has name tk002 with buffer- 338-2 30Oct2010 User KV002... (5 Replies)
Discussion started by: saluja.deepak
5 Replies

8. Shell Programming and Scripting

sed - matching pattern one but not pattern two

All, I have the following file: -------------------------------------- # # /etc/pam.d/common-password - password-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define the services... (2 Replies)
Discussion started by: RobertBerrie
2 Replies

9. Shell Programming and Scripting

counting the lines matching a pattern, in between two pattern, and generate a tab

Hi all, I'm looking for some help. I have a file (very long) that is organized like below: >Cluster 0 0 283nt, >01_FRYJ6ZM12HMXZS... at +/99% 1 279nt, >01_FRYJ6ZM12HN12A... at +/99% 2 281nt, >01_FRYJ6ZM12HM4TS... at +/99% 3 283nt, >01_FRYJ6ZM12HM946... at +/99% 4 279nt,... (4 Replies)
Discussion started by: d.chauliac
4 Replies

10. Shell Programming and Scripting

comment/delete a particular pattern starting from second line of the matching pattern

Hi, I have file 1.txt with following entries as shown: 0152364|134444|10.20.30.40|015236433 0233654|122555|10.20.30.50|023365433 ** ** ** In file 2.txt I have the following entries as shown: 0152364|134444|10.20.30.40|015236433 0233654|122555|10.20.30.50|023365433... (4 Replies)
Discussion started by: imas
4 Replies

Featured Tech Videos