A way to print only part of directory path


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users A way to print only part of directory path
# 1  
Old 01-20-2018
A way to print only part of directory path

Hi,

So I struggled to find a solution to the following problem:

I want to make sed print only part of multiple different paths.

So lets say we have

Code:
/path/path1/path2/logs/bla/blabla
/path/path1/path2/path3/logs/yadda/yadda/yadda

Can someone suggest a way to make sed or other utility print only the path name up to logs directory only? ie:

Code:
/path/path1/path2/logs/
/path/path1/path2/path3/logs

Thanks for the answers

By the way the solution will be implemented in a script which will run on multiple different machines, so the paths will always be different and not static.


Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 01-20-2018 at 08:23 AM.. Reason: Added CODE tags.
# 2  
Old 01-20-2018
Your desired output is inconsistent. You want the trailing /, or not?
Code:
sed "s|\(.*/logs\)[$/].*|\1|" # no
sed "s|\(.*/logs[$/]\).*|\1|" # yes

grep -o can do the same thing, probably more efficiently, but -o is possibly not portable, depending on where you plan to use it.
This User Gave Thanks to Scott For This Post:
# 3  
Old 01-20-2018
Quote:
Originally Posted by Scott
Your desired output is inconsistent. You want the trailing /, or not?
Code:
sed "s|\(.*/logs\)[$/].*|\1|" # no
sed "s|\(.*/logs[$/]\).*|\1|" # yes

grep -o can do the same thing, probably more efficiently, but -o is possibly not portable, depending on where you plan to use it.

Thank you very much for the quick answer. It worked like a charm.

Edit: both suggestions work, I will see which I will use when doing the deep tests.
Edit2: Yes, I know about the grep, but I cannot use grep in my script logic. The directories get extracted via lsof or pfiles.

Last edited by dampio; 01-20-2018 at 08:10 AM..
# 4  
Old 01-20-2018
Please help me out - why can't you use grep when you can use sed to process commands' output? Did you consider shell's "parameter expansion / suffix removal"?
# 5  
Old 01-20-2018
That didn't work so well, if logs was the last thing in the path.

Code:
sed -nE "s#(.*/logs(/|$)).*#\1#p"
sed -nE "s#(.*/logs)(/|$).*#\1#p"

# 6  
Old 01-23-2018
How about a totally different route:-
Code:
find / -type d -name logs

Would that do what you need?



Robin
This User Gave Thanks to rbatte1 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

What is the difference ../directory path and ./directory path in ksh?

What is the difference ../directory path and ./directory path in ksh? (1 Reply)
Discussion started by: TestKing
1 Replies

2. UNIX for Beginners Questions & Answers

Convert Relative path to Absolute path, without changing directory to the file location.

Hello, I am creating a file with all the source folders included in my git branch, when i grep for the used source, i found source included as relative path instead of absolute path, how can convert relative path to absolute path without changing directory to that folder and using readlink -f ? ... (4 Replies)
Discussion started by: Sekhar419
4 Replies

3. UNIX for Dummies Questions & Answers

Extract directory name from the full directory path in UNIX using shell scripting

My input is as below : /splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt /splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt /splunk/scrubbed/loyal/IFIND.HELLO.WROC.txt /splunk/scrubbed/triumph/ifind.triumph.txt From the above input I want to extract the file names only . Basically I want to... (5 Replies)
Discussion started by: IshuGupta
5 Replies

4. Shell Programming and Scripting

print all filenames in directory with path to another file

hi, i have a directory at /path/unix with the following files 1.txt 2.txt 3.txt 4.txt I want to make another file called filenames.txt at a different location called /path/home. So, my output file would be /path/home/filenames.txt with contents /path/unix/1.txt... (1 Reply)
Discussion started by: jacobs.smith
1 Replies

5. Shell Programming and Scripting

Retrieve directory path from full file path through sh

Hi, I have a file abcd.txt which has contents in the form of full path file names i.e. $home> vi abcd.txt /a/b/c/r1.txt /q/w/e/r2.txt /z/x/c/r3.txt Now I want to retrieve only the directory path name for each row i.e /a/b/c/ /q/w/e/ How to get the same through shell script?... (7 Replies)
Discussion started by: royzlife
7 Replies

6. Shell Programming and Scripting

Print directory name along with their path

Can any one tell me that how can i print all directory with their path in a given parent directory. i.e. parent directory /home/usr/ Now this shoe directory may contain sevral directory /home/usr dir1/ dir1.1/ dir1.2/ dir2 dir2.1/ dir2.2/ ... (5 Replies)
Discussion started by: jadoo_c2
5 Replies

7. Shell Programming and Scripting

Howto Print File Path or Print the Filename

I'm trying to clean up my samba share and need to print the found file or print the path of the image it tried to searched for. So far I have this but can't seem to get the logic right. Can anyone help point me in the right direction? for FILE in `cat list`; do if ; then ... (1 Reply)
Discussion started by: overkill
1 Replies

8. Shell Programming and Scripting

retrieve part of file path

Hi I am trying to use sed to retrieve part of my html file's path. I am having a hard time getting what I want. Could someone give me some help? I want to retrieve the section after html and before the file name For example if I have the following, ... (3 Replies)
Discussion started by: tiger66
3 Replies

9. Shell Programming and Scripting

How do I get awk to print a " in it's print part?

The line is simple, use " '{ print $1"]"$2"\"$3THE " NEEDS TO GO HERE$4 }' I've tried \", "\, ^" and '"" but none of it works. What am I missing? Putting in the [ between $1 and $2 works fine, I just need to do the same with a ". Thanks. (2 Replies)
Discussion started by: LordJezo
2 Replies

10. Shell Programming and Scripting

getting the path part of an argument

Seems I'm inundating this forum with questions, but anyway: I am writing a script that should accept one and only one argument when called. That argument should designate a file, either with path/filename or just filename. Now to the difficult bit: I want to figure out a way to store... (9 Replies)
Discussion started by: ropers
9 Replies
Login or Register to Ask a Question

Featured Tech Videos