2012-04-03 3 views
0

Ich habe einen Pfad, den ich mit dem pwd Befehl abrufen, ich muss diese Pfadlaufzeit in meinem Shell-Skript ändern. Zum Beispiel lassen Sie mich sagen, ich habe /var/www/cgi-Skript, ich muss es in /var/www/etc ändern. Was ich versuche zu tun ist, den letzten Index von "/" abzurufen, einen Teilstring zu nehmen und dann etc hinzuzufügen. Ich versuchte mit awk mehrmals, aber ich kann nicht scheinen, eine Lösung zu finden. Gibt es eine Möglichkeit, einen umgekehrten Index zu verwenden?Substring und Reverse-Index mit awk

path=`pwd`; 
char="/" 
pathindex=`awk -v a="$path" -v b="$char" 'BEGIN { print index(a,b)}'` 

Antwort

4

Check out dirname:

$ pwd 
/var/www/cgi-script 
$ echo $PWD 
/var/www/cgi-script 
$ echo `dirname $PWD`/etc 
/var/www/etc 
+0

umgeben werden Sie sind ein Genie. Ich danke dir sehr! – raz3r

3

@AndersLindahl hat die richtige Antwort. Um dies zu tun in awk:

newpath=$(awk -F $char -v OFS=$char '{$NF="etc"; print}' <<< "$path") 
0

Meine Situation war ein wenig anders, ich bin schon im Code - es ist zu spät, einen neuen FS zu tun. Ich habe einen Personennamen, der eine unbekannte Anzahl von Wörtern hat, aber das letzte Wort ist ihr Nachname und muss von "/"

+0

Was meinst du mit "zu spät für einen neuen FS"? –