2012-05-27 18 views
10

esempio String:Come dividere stringa sulla barra in bash

/gasg/string

risultato atteso: string

caratteri da rimuovere: tutti i caratteri tra i simboli "/", tra cui la simboli

+0

'batween the"/"symbols' Cosa dovrebbe aprirsi se c'è una sola barra o nessuna barra? O testo prima della prima barra? –

risposta

13

Con sed:

$ echo "/gasg/string" | sed -e 's/\/.*\///g' 
string 

Con la manipolazione di stringhe Buil-in bash:

$ s="/gag/string" 
$ echo "${s##/*/}" 
string 

vostre corde apparire esattamente come percorsi Unix. Ecco perché si potrebbe anche utilizzare l'utilità basename - è returnes l'ultima parte di un dato percorso Unix:

$ basename "/gag/string" 
string 
# It works with relative paths and spaces too: 
$ basename "gag/fas das/string bla bla" 
string bla bla 
+0

La prima barra nell'espansione parametri non è necessaria. Le virgolette sul compito sono necessarie in questo caso, ma dovresti usarle per l'espansione per abitudine. –

+0

Sono d'accordo che il primo '/' non è necessario ma l'ho aggiunto per illustrare il punto. –

+0

Le stringhe sembrano esattamente come i nomi di percorso Unix. - Sì, era mia intenzione ottenere l'ultima partion del pathname dato e con il basename è proprio come "find -exec basename {} \;" che per me è geniale! Grazie per il suggerimento. – user1306777

10

AWK Inoltre - uso barra come separatore e stampa ultimo campo

echo "/gas/string" | awk -F/ '{print $NF}' 

O tagliare - ma che funzionerà solo se si dispone di parità di elenchi di spogliare

echo "/gasg/string" |cut -d/ -f 3 
2

è possibile utilizzare bash stringa manipolazione

a='/gasg/string' 
echo ${a##*/}