Mit regex kann man wunderbar nach allen möglichen Ausdrücken suchen. Nur wird z.B. wenn man genau einen String zwischen zwei Zeichen sucht (z.B. in einem HTML Output: <a href=server> will ich nur das Wort „server“) auch das die Zeichen links- und rechts ausgegeben.
Mittels „lookaround“ lässt sich in regex nur der Gesucht String ausgeben.
Beispiel:
echo '<a href=server>' | grep -oP '(?<=href=).*?(?=>)'
Gibt im String genau das Wort „server“ aus.
Alternativ kann dafür auch das Ranges Feature in awk benutzt werden.
Referenzen
- regular-expressions.info: Lookahead and Lookbehind
- stackoverflow.com: Pattern to get string between two specific words/characters using grep
- awk Manual: Specifying Record Ranges with Patterns