ich eine Zeichenfolge, dieersetzen und Schritt Buchstaben und Zahlen mit awk oder sed
fastcgi_cache_path /var/run/nginx-cache15 levels=1:2 keys_zone=MYSITEP:100m inactive=60m;
Eines der Ziele dieses Skript enthält, ist nginx-Cache zwei Stellen zu erhöhen, basierend auf dem Wert finden bei früheren Datei. Dafür benutze ich diesen Code:
# Replace cache_path
PREV=$(ls -t /etc/nginx/sites-available | head -n1) #find the previous cache_path number
CACHE=$(grep fastcgi_cache_path $PREV | awk '{print $2}' |cut -d/ -f4) #take the string to change
SUB=$(echo $CACHE |sed "s/nginx-cache[0-9]*[0-9]/&@/g;:a {s/[email protected]/1/g;s/[email protected]/2/g;s/[email protected]/3/g;s/[email protected]/4/g;s/[email protected]/5/g;s/[email protected]/6/g;s/[email protected]/7/g;s/[email protected]/8/g;s/[email protected]/9/g;s/[email protected]/@0/g;t a};s/@/1/g") #increment number
sed -i "s/nginx-cache[0-9]*/$SUB/g" $SITENAME #replace number
Vielleicht nicht so elegant, aber es funktioniert.
Das andere Ziel ist letzte Buchstaben aller Vorkommen von MySite x (MYSITEP, in diesem Fall zu erhöhen, soll MySite werden Q nach MySite P usw. usw. und einmal MySite Z wird erreicht wieder einen Brief schreiben, mySite AA, mySite AB, etc. etc.
ich dachte, so etwas wie:
sed -i "s/MYSITEP[A-Z]*/MYSITEGG/g" $SITENAME
aber es kann nicht funktionieren Ursache MYSITEGG ist ein statischer Wert und kann nicht verwendet werden. Wie kann ich den letzten Buchstaben berechnen, ihn auf den nächsten erhöhen und sobald der letzte Z-Buchstabe erreicht ist, einen weiteren Buchstaben hinzufügen?
Vielen Dank!
Perl inkrementiert Buchstaben. Ich schlage vor, Sie werden 'perl -p -e'-Lösungen wollen. Fügen Sie das Tag hinzu, wenn Sie dafür offen sind. – stevesliva