Sieht so aus, als hättest du eine Konfigurationsdatei. Was Sie tun könnten, ähnelt dem, was Adam Siemeon / slm vorschlagen:
sed -nr 's/[^=]+=\s*(.+)$/\1/p' filename
wo [^=]schließen alle ‚=‘ Zeichen, +sagt einer oder mehr von der gleichen Art von Zeichen, das durch eine tatsächliche gefolgt =, \sjeder Leerraum (einschließlich Laschen \tund neue Linien \n, \r\nund ebene Bereiche sind ‚‘, wohingegen *Mittel null oder mehr des gleichen Typs In Klammern wird angegeben, was enthalten ist, um die übereinstimmenden Zeichenfolgen in die Ersetzungsplatzhalter \ 1, \ 2, ..., \ n zu setzen $. Dies bedeutet das Ende einer Zeile. Dies folgt dem typischen Ersetzungsmuster von:. s/.../.../modifiersDie Befehlszeilenoption -rsteht für Erweiterte Regex-Syntax (aus Bequemlichkeitsgründen) und -nbedeutet, dass nichts ausgegeben wird, bis oder solange dies nicht ausdrücklich angefordert wird. Der pModifikator gibt das Ergebnis aus.
Sie können eine globale Suche mit dem gModifikator wie folgt durchführen:
sed -nr 's/[^=]+=\s*(.+)$/\1 /pg' filename # note the space after \1
so dass Sie einen String erhalten , getrennt durch ' '(könnte \n, \toder was auch immer) , die Sie leicht verarbeiten können.
Beides gilt, vorausgesetzt, Ihre Werte, denen das Gleichungszeichen vorangestellt ist, erstrecken sich bis zum Ende einer Zeile und werden nicht von Kommentaren oder anderen Zeichen gefolgt, deren Semantik von einem einfachen "Wert" abweicht.
Bearbeiten:
Ich kann hier noch keine Kommentare zu anderen Posts abgeben. Um die Zeile anzuzeigen, übergeben Sie einfach die Zeilennummer (in Ihrem Fall 3) vor soder vor dem einleitenden Anführungszeichen (genau wie in vim).
sed -nr '3s/[^=]+=\s*(.+)$/\1/p' filename
Bitte werfen Sie einen Blick auf info sed. Zum Beispiel sind 3.2 und 4.7 für Sie von besonderem Interesse.
awkBefehl ist nett - aber nur, wenn Sie Leerzeichen haben=. Es wird nicht funktionierenPOP3_SERVER_NAME=localhost.