Come tagliare l'ultimo campo in questa stringa shellCome tagliare l'ultimo campo da una stringa shell
LINE="/string/to/cut.txt"
modo che la stringa sarebbe simile a questa
LINE="/string/to/"
Grazie in anticipo!
Come tagliare l'ultimo campo in questa stringa shellCome tagliare l'ultimo campo da una stringa shell
LINE="/string/to/cut.txt"
modo che la stringa sarebbe simile a questa
LINE="/string/to/"
Grazie in anticipo!
Penso che si possa usare il comando "dirname". Prende in input un percorso file, rimuove la parte nome file e restituisce il percorso. Per esempio:
$ dirname "/string/to/cut.txt"
/string/to
echo "/string/to/cut.txt" | awk -F'/' '{for (i=1; i<NF; i++) printf("%s/", $i)}'
Ciò funzionerà nelle moderne versioni Bourne, come Dash, BusyBox cenere, ecc, così come i discendenti, come Bash, Korn shell e shell Z.
LINE="/string/to/cut.txt"
LINE=${LINE%/*}
o per mantenere la barra finale:
LINE=${LINE%/*}/
Questa dovrebbe essere la risposta accettata perché è la soluzione più rapida e portatile in quanto funzionerà in qualsiasi shell conforme a POSIX senza richiedere un 'fork'. –
bella soluzione ... grazie – anon
echo $LINE | grep -o '.*/'
funziona troppo.
Per quel che vale, una soluzione basata su cut
:
NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
Credo che questo stia tagliando il primo campo, non l'ultimo? – Michael
@ Michael: l'ho eseguito attraverso alcuni test qui e sembra funzionare bene. In realtà taglia il primo campo, ma inverte (piuttosto in modo inefficiente) la stringa prima e dopo, il che ha l'effetto complessivo desiderato. –
Posso confermare che funziona davvero, in entrambe le implementazioni di taglio Unix e GNU. Ovviamente la risposta dirname è migliore per il caso d'uso specifico dell'OP, ma ho trovato questo quando cercavo un modo generale per eliminare l'ultimo campo con taglio e questo era. – jdeuce
Come possiamo farlo usando taglio? – user558134
@ user558134 - non troppo sicuro variabile di supporto taglio per l'ultimo campo, awk è più elegante – ajreal
awk ha risolto il mio problema molto più facilmente e con meno codice, grazie per il suggerimento. –