Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to grep an exact string with slash in it?

I'm running macOS.

There are the following strings:

/superman

/superman1

/superman/batman

/superman2/batman

/superman/wonderwoman

/superman3/wonderwoman

/batman/superman

/batman/superman1

/wonderwoman/superman

/wonderwoman/superman2

I want to grep only the bolded words.

I figured doing grep -wr 'superman/|/superman' would yield all of them, but it only yields /superman.

Any idea how to go about this?

like image 517
Carol Ward Avatar asked Nov 24 '25 21:11

Carol Ward


1 Answers

You may use

grep -E '(^|/)superman($|/)' file

See the online demo:

s="/superman
/superman1
/superman/batman
/superman2/batman
/superman/wonderwoman
/superman3/wonderwoman
/batman/superman
/batman/superman1
/wonderwoman/superman
/wonderwoman/superman2"
grep -E '(^|/)superman($|/)' <<< "$s"

Output:

/superman
/superman/batman
/superman/wonderwoman
/batman/superman
/wonderwoman/superman

The pattern matches

  • (^|/) - start of string or a slash
  • superman - a word
  • ($|/) - end of string or a slash.
like image 159
Wiktor Stribiżew Avatar answered Nov 27 '25 15:11

Wiktor Stribiżew



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!