2017-10-14 62 views
-1

我正在努力创建命令行来将"00-59/1 * * * *"替换为"11-11/1 * * * *"。实际上,一旦这些值根据用户行为而改变,这两个值都将通过变量传递。如何在Linux Bash(Ubuntu)中构建“sed”命令

var1="00-59/1 * * * *"

var2="11-11/1 * * * *"

正如你所看到的,这些值属于的crontab。这是一个脚本来更改crontab上的计划值。

我知道这里的大问题是因为里面有“/”caracter,但我不知道如何使它工作。

有什么想法?

在此先感谢!

+1

欢迎来到堆栈溢出,请添加预期的输出以发布代码标签。 – RavinderSingh13

回答

1

这里是一个示例输入。

$ cat input 
00-59/1 * * * * TASK1 
* * * * * TASK2 
00 1 * * * TASK3 
1 1 1 1 1 TASK4 

# Escaping `#` and `\` before substitute. 
# For BSD Sed 
$ var1="$(echo "00-59/1 * * * *" | sed -E 's/([/*])/\\\1/g')" 
$ var2="$(echo "11-11/1 * * * *" | sed -E 's/([/*])/\\\1/g')" 

# For GNU Sed 
$ var1="$(echo "00-59/1 * * * *" | sed -r 's/([/*])/\\\1/g')" 
$ var2="$(echo "11-11/1 * * * *" | sed -r 's/([/*])/\\\1/g')" 

# Don't forget to use double quotes. :) 
$ cat input | sed "s/${var1}/${var2}/" 
11-11/1 * * * * TASK1 
* * * * * TASK2 
00 1 * * * TASK3 
1 1 1 1 1 TASK4