2017-02-11 1 views
2

Ich habe einige Datei, der Name der Dateien, wenn vhost-<someport>.conf, Ich möchte die Zeile mit der Portnummer in jeder Datei durch den Dateinamen $ Port vhost-$port.conf ersetzen. ändern Sie mehrere Dateien Inhalt durch den Dateinamen

Zum Beispiel vhost-8081.conf Datei die Zeile listen 8081 enthalten wird, wird vhost-8082.conf Datei enthalten die Zeile listen 8082;, etc ..

vhost-8081.conf 
vhost-8082.conf 
etc.. 

server { 
    listen 8081; 
    } 

server { 
    listen 8082; 
    } 

Antwort

1

Wenn Sie Dateien vhost-NUM.conf genannt haben, dann können Sie das vhost- Präfix abzustreifen und das .conf Suffix um die Portnummer zu extrahieren, und dann sed -i verwenden, um listen .* durch die Nummer vor Ort zu ersetzen, indem Sie die Datei aktualisieren:

for file in vhost-*.conf; do 
    num=${file#vhost-} 
    num=${num%.conf} 
    sed -i "s/listen .*/listen $num;/" "$file" 
done 
0

Das könnte sein, was Sie wollen:

for file in vhost-*.conf 
    do  num=${file#vhost-} 
    sed -i "s/listen .*/vhost-$num;/" "$file" 
    done 

    cat vhost* 
    server { 
    vhost-8081.conf; 
    } 
    server { 
    vhost-8082.conf; 
Verwandte Themen