Usando grep
com PCRE ( -P
):
grep -Po -- '-\K[^-]+\..*?(?=(?:\)|)\.$)' file.txt
-
-
corresponde a-
e\K
descarta a correspondência -
[^-]+\..*?
corresponde à subcadeia desejada -
O padrão lookahead positivo de largura zero
(?=(?:\)|)\.$)
garante que a correspondência seja seguida por).
ou apenas.
no final da linha.
Exemplo:
$ grep -Po -- '-\K[^-]+\..*?(?=(?:\)|)\.$)' <<<'04/07/2016 11:23:44 [8344] BDFDD123A Some Text Here (Word: ABD_ABDCD, Word: Word, Word: Word Word-ABCAbcAbc-HOSTNAME.DOMAINNAME.COM-ASDF).'
HOSTNAME.DOMAINNAME.COM-ASDF