Bash erhält die letzte Zeile einer Variablen

8

Wenn ich eine Variable mit mehreren Zeilen (Text) habe, wie bekomme ich die letzte Zeile heraus?

Ich habe bereits herausgefunden, wie man die erste Zeile bekommt:

%Vor%

Wahrscheinlich sollte es einen Operator für die letzte Zeile geben. Oder zumindest nehme ich an, dass mit @ die erste Zeile herauskommt.

    
Matt Backslash 21.09.2016, 11:21
quelle

3 Antworten

10

Verwenden von Bash-String-Manipulationen:

%Vor%

${str##*$'\n'} entfernt die längste Übereinstimmung bis \n vom Anfang des Strings, so dass nur die letzte Zeile in der Eingabe übrig bleibt.

    
anubhava 21.09.2016, 11:26
quelle
11

Ein einfacher Weg, dies zu tun, ist tail :

%Vor%     
redneb 21.09.2016 11:23
quelle
1

Wenn Sie ein Array mit einem Element pro Zeile von STRING möchten, verwenden Sie

%Vor%

Dann wäre die erste Zeile ${lines[0]} und die letzte Zeile wäre ${lines[-1]} . In älteren Versionen von bash sind negative Indizes nicht erlaubt und Sie müssen den letzten Index manuell berechnen: ${lines[${#lines[@]}-1]} .

    
chepner 21.09.2016 11:31
quelle

Tags und Links