2017-05-17 1 views
2

zum Beispiel bekommen, ist die Variable wie:Wie die führenden Whitespaces einer bash Variable

Der mittlere Teil ‚ab1 de $%‘ eine beliebige Kombination von Zeichen sein kann.

Ich möchte den Teilstring der führenden Leerzeichen erhalten, um andere Zeilen einzurücken.

+0

Was möchten Sie abschneiden? Nur die 'graph' Zeichen (z.B.' ab1de $% ')? oder auch das nachlaufende Leerzeichen? –

Antwort

4

Sie können Suche-und-Ersetzen-parameter substitution:

leading_whitespace="${ANY/[^[:space:]]*/}" 

EDIT:

Oder auch substring-Entfernungparameter substitution wie David C. Rankin unten erwähnt:

leading_whitespace="${ANY%%[![:space:]]*}" 
+3

'[^ [: Leerzeichen:]] * * könnte näher an der Problemspezifikation liegen. – rici

+0

@rici - Danke, ich stimme zu. Ich werde die Antwort aktualisieren. –

+2

* Parameter-Erweiterung w/substring Entfernung * funktioniert auch 'lws =" $ {any %% [! [: Leerzeichen:]] *} "' –

1

können Sie sed verwenden:

leading=$(sed -E 's/^([[:space:]]+).*/\1/' <<< "$string") 
1

Sie Parameter Erweiterung der ${parameter%%word} verwenden können.

leading=${ANY%%[[:graph:]]*} 
+0

Ich würde die Lösung von ** David C. Rankin ** - 'lws =" $ {ANY %% [! [: Space:]] *} "' aus dem von ** rici ** [oben] genannten Grund bevorzugen (http://stackoverflow.com/a/44016003/4279440) - das entspricht eher der Problembeschreibung. –

Verwandte Themen