2017-10-14 11 views
-1

"00-59/1 * * * *""11-11/1 * * * *"に置き換えるコマンドラインを作成するのが苦労しています。実際には、ユーザーの振る舞いに応じて値が変更されると、両方の値が変数に渡されます。LinuxのBash(Ubuntu)で "sed"コマンドを作成する方法

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

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

あなたが見ることができるように、これらの値は、のcrontabに属します。これは、crontabのスケジュール値を変更するためのスクリプトです。

ここで大きな問題は「/」カーカーが内部にあるためですが、動作させる方法を理解できませんでした。

ありがとうございます!

+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 
関連する問題