2017-03-27 3 views
0

ich Strings wie /mnt/c/BashTest/tmp/iostream und /mnt/c/BashTest/tmp//mnt/c/BashTest/tmp/iostream haben und ich muss überprüfen, ob es // im String ist, und wenn es alles vor // (außer einem /) ist, entfernen. Zum Beispiel /mnt/c/BashTest/tmp/ von der zweiten Zeichenfolge.alles zu entfernen, bevor //

+0

Bitte nehmen Sie sich einen Blick auf: [Was soll ich tun, wenn jemand meine Frage beantwortet?] (Http://stackoverflow.com/help/someone-answers) – Cyrus

Antwort

1

Ich schlage vor, einen regulären Ausdruck mit GNU verwenden sed:

sed 's|.*//|/|' file 

Wenn Sie -i Ihre Datei "in place" Verwendung sed die Möglichkeit zu bearbeiten.

1

Wenn die Zeichenfolge in einer Variablen enthalten ist, können Sie verwenden:

$ str=/mnt/c/BashTest/tmp//mnt/c/BashTest/tmp/iostream 
$ echo "${str/*\/\//\/}" 
/mnt/c/BashTest/tmp/iostream 

Es ist ein bisschen unhandlich wegen \/ entweicht, sondern läuft darauf hinaus, „ersetzen die erste Instanz von *// (alles bis einschließlich //) durch eine einzige / ".

0

Wenn Sie wollen versuchen, mit grep:

grep -oP '(?<=/)/.*' file 
Verwandte Themen