使用sed使用shell脚本替换字符串的特定char

时间:2015-09-25 19:55:49

标签: linux bash shell sed

我必须用一些其他值替换文件的特定行。例如:我有一个内容如下的文件:

request.timing=0/10 * * * * * ?

现在,我想用动态值替换10(或具体地说,该位置的任何值)。例如,如果我想用20替换它,则文件应更新为:

request.timing=0/20 * * * * * ?

有人能帮助我吗?我使用sed如下:

sed -i "s/request.timing=0\/??/request.timing=0\/$poller"

其中poller是我们传递的动态值。

3 个答案:

答案 0 :(得分:1)

首先,您必须检查变量$poller具有的字符,因为sed可以将其中的任何字符解释为特殊字符。检查完毕后,在sed内使用{strong> 的$poller分隔符。我们假设我们可以使用/

sed -r 's/(request.timing=0\/)[0-9]{2}/\1'"$poller"'/g'

它是如何运作的

-r选项激活扩展正则表达式,以便您可以使用[0-9]{2}之类的内容,并使用( ... )来捕获要在< em> replacement site。

答案 1 :(得分:0)

string cmdFilePath = Path.Combine(folder, Path.GetFileName(cmdFileName));
using (FileStream fStream = new FileStream(cmdFilePath, FileMode.Create))

答案 2 :(得分:0)

您遇到麻烦的原因是?在正则表达式中无效。请改用.?用于表示前一个字符可能存在0或1次。

sed -i "s/request.timing=0\/../request.timing=0\/$poller"

(这并不是说其他​​答案都不正确!)