我想自動將新后端添加到組態檔中,但不知道該怎么做。檔案的相關部分如下所示:
[backend]
backends = backend-1 backend-2
timeout = 10
connectionsperhost = 100
[backend-1]
url = https://somedomain.com
secret = 6135bcb7849ca1886e2de193
[backend-2]
url = https://anotherdomain.com
secret = 75048ad646a5af787cbbaaa3
我正在尋找一個簡單的解決方案來添加另一個具有特定 url 和秘密的后端條目。
[backend-3]
url = https://adiffrentdomain.com
secret = 42349234238423424
同時將名稱“backend-3”附加到“[backend]”部分的“backends =”行。
有沒有辦法通過一般的 sed 或 bash 腳本來完成這項作業?
請感謝任何幫助或提示!
uj5u.com熱心網友回復:
Withawk用于任意新的后端條目,其中,newbackendname是唯一提供的輸入。只需將新后端添加到-list 中,并直接在通用-block 之后添加相應的塊。urlsecretbackends =[backend]
awk -vnewentry="newbackendname" -vurl="http://new.url" -vsecret="secret123" '
#in backends= line: add new entry (at first position)
#and set `add` marker
/^backends =/{sub(/^backends = /,"&"newentry" ",$0) ; add=1}
#marker exists and empty line (end of header block) is found:
#print new entry and unset marker `add`
add && /^$/{ print "\n["newentry"]"
print "url = "url
print "secret = "secret
add=0}
#print by default
1' infile.txt
希望評論能讓您輕松理解。使用此代碼,您也可以通過 shell 變數添加 url 和 secretawk -vurl="$URL" -vsecret="$SECRET" -vnewentry="$NEWBACKEND" '...' infile.txt
uj5u.com熱心網友回復:
使用 sed
$ sed '/backends =/s/$/ backend-3/;/^\[backend-2/{N;N;s|secret.*|&\n\n[backend-3] \
url = https://adifferentdomain.com \
secret = 42349234238423424|}' input_file
[backend]
backends = backend-1 backend-2 backend-3
timeout = 10
connectionsperhost = 100
[backend-1]
url = https://somedomain.com
secret = 6135bcb7849ca1886e2de193
[backend-2]
url = https://anotherdomain.com
secret = 75048ad646a5af787cbbaaa3
[backend-3]
url = https://adiffrentdomain.com
secret = 42349234238423424
如果輸入來自變數,您可能希望使用雙引號來擴展變數。例如;
sed "/backends =/s/$/ backend-3/;$a\\n[backend-3] \
url = $url_input \
secret = $secret_input" input_file
uj5u.com熱心網友回復:
您可以嘗試使用awk. 它向以 backends 開頭的行添加一個backends條目,并在[backend]塊的最后一行之后(在connectionsperhost之后)附加一個帶有給定資訊的[backend-x]部分。顯然,它依賴于后端的條目是否正確,因為它不單獨計算[backend]部分。
url="www.domain.com"
s=9283283h4923h42934
% awk -v url="${url}" -v s="${s}" '/^backends/{x=NF-1; $0=$0" backend-"x}
/^connectionsperhost/{ print; $0="\n[backend-"x"]\nurl = "url"\nsecret = "s}
{print}' file
[backend]
backends = backend-1 backend-2 backend-3
timeout = 10
connectionsperhost = 100
[backend-3]
url = www.domain.com
secret = 9283283h4923h42934
[backend-1]
url = https://somedomain.com
secret = 6135bcb7849ca1886e2de193
[backend-2]
url = https://anotherdomain.com
secret = 75048ad646a5af787cbbaaa3
資料
cat file
[backend]
backends = backend-1 backend-2
timeout = 10
connectionsperhost = 100
[backend-1]
url = https://somedomain.com
secret = 6135bcb7849ca1886e2de193
[backend-2]
url = https://anotherdomain.com
secret = 75048ad646a5af787cbbaaa3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410599.html
標籤:
上一篇:用替換合并兩個檔案
