限制sed命令

时间:2013-02-07 06:33:06

标签: sed

我有一个需要修改的变量,以便添加分钟%M。我知道sed命令,它正在按预期工作。

# cat mysed.txt 
myfirstfile="comany$mydb`date +'%d-%b-%Y-%H'`.sql"

# sed -i 's/\%H/\%H-\%M/' mysed.txt
# cat mysed.txt 
myfirstfile="company$mydb`date +'%d-%b-%Y-%H-%M'`.sql"

但如果我再次运行相同的sed命令,它将再次添加%M,如下所示。

# sed -i 's/\%H/\%H-\%M/' mysed.txt

# cat mysed.txt 
myfirstfile="company$mydb`date +'%d-%b-%Y-%H-%M-%M'`.sql"

我需要一个sed命令,即使sed命令执行两次(错误),也应该只添加分钟%M一次

3 个答案:

答案 0 :(得分:3)

# sed -i "s/%H'/%H-%M'/" mysed.txt

这应该有效。这样,只有在%H旁边有引号时才会进行替换。

答案 1 :(得分:0)

在替换之前测试它是否存在:

sed '/%H-%M/! s/%H/%H-%M/' mysed.txt

顺便说一下。 %不需要转义。

答案 2 :(得分:0)

我相信下面的命令会正常工作。请将test.dat文件替换为您的文件名。

cat test.dat|sed "s/\%H\'/\%H\-\%M\'/" > test.dat

没有cat命令

sed -i "s/\%H\'/\%H\-\%M\'/" test.dat >  test.dat

干杯!