I have function that prints out the longest path in directory tree. Let's say the function prints this: ./.mozilla/firefox/z6upkljn.default/storage/permanent/chrome/idb/2918063365piupsah.files
What I want to do is to cut this string after match with user defined regex.
For example if user puts in regex like: *de?a*
, the only match is z6upkljn.default
. So at the end, the output will be ./.mozilla/firefox
Here is a code sample I found sed 's/My_expression.*//'
Where the My_expression is regular expression and delimiter for cutting defined by user.
It works for this input $echo /homes/eva/xm/xmikfi00 | sed 's/mik.*//'
, where for output I get /homes/eva/xm/x
. As expected.
But if I enter simple regex $echo /homes/eva/xm/xmifki00 | sed 's/mi?.*//'
, the output is /homes/eva/xm/xmikfi00
. Anyone who can help me how to get the same output as in the previous example?
I'll be glad for any help or suggestions, thanks.
Sed uses (by default) POSIX BREs, not EREs. If what you're trying to match with your ?
is "any character", use a .
: echo /homes/eva/xm/xmifki00 | sed 's/mi..*//'
.
See man 7 re_format
for more details.