2017-10-14 59 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