如何在Linux Bash(Ubuntu)中构建“sed”命令
问题描述:
我正在努力创建命令行来将"00-59/1 * * * *"
替换为"11-11/1 * * * *"
。实际上,一旦这些值根据用户行为而改变,这两个值都将通过变量传递。如何在Linux Bash(Ubuntu)中构建“sed”命令
var1="00-59/1 * * * *"
var2="11-11/1 * * * *"
正如你所看到的,这些值属于的crontab。这是一个脚本来更改crontab上的计划值。
我知道这里的大问题是因为里面有“/”caracter,但我不知道如何使它工作。
有什么想法?
在此先感谢!
答
这里是一个示例输入。
$ 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
欢迎来到堆栈溢出,请添加预期的输出以发布代码标签。 – RavinderSingh13