我有一個包含更換和增加信件和其他具有AWK號碼或sed的
fastcgi_cache_path /var/run/nginx-cache15 levels=1:2 keys_zone=MYSITEP:100m inactive=60m;
一個這個腳本的目標是基於價值發現以前遞增nginx的緩存兩位數字的字符串文件。爲了做到這一點,我用這個代碼:
# 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
也許不那麼優雅,但它的工作原理。
另一個目標是增加MYSITE X(MYSITEP的所有出現的最後一個字母,在這種情況下,應該成爲MYSITE Q,MYSITE後P,等等等等,一旦MYSITE ž將達到添加另一封信中,像MYSITE AA,MYSITE AB,等等,等等
我想是這樣的:
sed -i "s/MYSITEP[A-Z]*/MYSITEGG/g" $SITENAME
但它不能工作原因MYSITEGG是一個靜態值,不能使用。 如何計算最後一個字母,將它增加到下一個字母,一旦最後一個Z字母到達,再添加一個字母?
謝謝!
Perl增加字母。我建議你想要'perl -p -e'解決方案。如果你願意,可以添加標籤。 – stevesliva