我有一個 .sed、.bash 和 .txt 檔案
x.bash 檔案中有這個
#!/bin/bash
./y.sed "$1"
z.txt 檔案中有這個
<dstamp>
y.sed 檔案有這個命令來查找 <dstamp> 并將其替換為當前日期
#!/bin/sed -rf
s/<dstamp>/date ' %Y%m%d'/e
這行得通。它用當前日期替換 <dstamp>
但是,如果我的 z.txt 檔案中的 <dstamp> 前面有另一個單詞,則該命令不起作用,例如:
Date: <dstamp>
運行它會出現此錯誤:
./x.bash z.txt
sh: 1: Date:: not found
我假設它缺少的是 s///g 末尾的“/g”。那么,我怎樣才能使這個全球化呢?即讓“e”和“g”一起作業?
此外,任何時候我修改它,因此
s/<dstamp>/date ' %Y%m%d'/e
s/<dstamp>/New date: date ' %Y%m%d'/e
它還提示我同樣的錯誤:
sh: 1: Date:: not found
從技術上講,提出了兩個問題,但歡迎任何幫助。
uj5u.com熱心網友回復:
e執行整行。你需要這樣的東西:
#!/bin/sed -f
s/'/'\\''/g
s/%/%%/g
s/\(.*\)<dstamp>\(.*\)/date '\1%Y%m%d\2'/e
不過,將輸出date作為替換字串會更容易:
sed "s/<dstamp>/$(date %Y%m%d)/" z.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514446.html
標籤:linux重击壳sed
