I feel like beating my head off my desk so any help is appreciated.
#!/bin/bash
echo 'wahegru.com mail is handled by 1 ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.' | grep '(?<=10 )(\.*+\w)*+'
Now I know this regex works:
(?<=10 )(\.*+\w)*+
Because I can paste the text into https://regex101.com/ and the regex and it finds what I need as a full match.
Why doesn't it work for grep though?
Edit, tried this:
echo 'wahegru.com mail is handled by 1 ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.' | grep -P '(?<=10 )(\.*+\w)*+'
But it gives me this:
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
Tried
echo 'wahegru.com mail is handled by 1 ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.' | perl -nle'print if m{(?<=10 )(\.*+\w)*+}'
But that outputs the wrong stuff:
wahegru.com mail is handled by 1 ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.com. wahegru.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.