[英]replace specific char of a string using sed using shell script
我必須用一些其他值替換文件的特定行。 例如:我有一個內容如下的文件:
request.timing=0/10 * * * * * ?
現在,我想用動態值替換10(或具體,該位置的任何值)。 例如,如果我想用20替換它,則文件應更新為:
request.timing=0/20 * * * * * ?
有人能幫我嗎? 我使用sed如下:
sed -i "s/request.timing=0\/??/request.timing=0\/$poller"
poller是我們通過的動態值。
首先,你必須檢查變量$poller
具有的字符,因為sed
可以將其中的任何字符解釋為特殊字符。 檢查sed
,使用不在 $poller
的sed
分隔符。 我們假設我們可以使用/
:
sed -r 's/(request.timing=0\/)[0-9]{2}/\1'"$poller"'/g'
-r
選項激活擴展正則表達式,以便您可以使用[0-9]{2}
,並使用( ... )
捕獲要在替換站點中使用的字符串。
$ echo 'request.timing=0/10 * * * * * ?' |
sed -r 's:(request.timing=0/)[0-9]+:\1135:'
request.timing=0/135 * * * * * ?
$ poller="135"
$ echo 'request.timing=0/10 * * * * * ?' |
sed -r 's:(request.timing=0/)[0-9]+:\1'"$poller"':'
request.timing=0/135 * * * * * ?
你遇到麻煩的原因是?
在正則表達式中無效。 使用.
代替。 ?
用來說前一個字符可能存在0或1次。
sed -i "s/request.timing=0\/../request.timing=0\/$poller"
(這並不是說其他答案不正確!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.