如果你在bash這樣做,那麼它可能更簡單的用下面的sed
命令來替換你的整個操作:
sed 's!/2013/07/31-05:54:14/!'"$(date --date "+3 min" '+ %Y/%m/%d-%H:%M:%S')"'!g'
這將date
命令的輸出插入sed
替換字符串。
此外,我看到您在搜索字符串的開頭和結尾處有一個/
字符。你是否想將這些作爲搜索字符串的一部分?
在原來的命令,你需要插值$a
到system
命令,你可以這樣做:
#!/usr/bin/perl
my $a;
$a = qx(date --date "+3 min" '+ %Y/%m/%d-%H:%M:%S');
system(q(perl -pi.back -e 's{/2013/07/31-05:54:14/}{) . $a . q(}g;' /tmp/ron/replace.txt));
的$a
沒有一個q()
字符串中擴大(這相當於包圍字符串'
)所以我已經關閉了q()
並連接$a
重新打開q()
。
從perl腳本中調用perl有點笨拙。從本質上講,你只是想用date命令的輸出一行代碼,所以這樣的事情也可能比較簡單:
bash$ perl -pi.back -e 's{/2013/07/31-05:54:14/}{'"$(date --date "+3 min" '+ %Y/%m/%d-%H:%M:%S')"' /tmp/ron/replace.txt
雖然這是非常類似於使用sed
。