2016-05-16 22 views
1

我希望有如何將日期的值傳遞給sed?

date + "%Y%m%d" 

值在sed

cat template.html | sed s/\\@\\@DATENUMBER\\@\\@/date +"%Y%m%d"/g 

將管道作爲進行置換的字但這是不允許的。我如何提取日期的值並正確輸入?

回答

3

嘗試:

sed "s/@@[email protected]@/$(date +"%Y%m%d")/g" template.html 

注:

  1. 沒有必要cat因爲sed將採取一個文件名作爲參數。

  2. 如果您要更換的樣子@@[email protected]@文本,那麼就沒有必要讓所有的反斜線:@既不是殼主動角色,也不是sed的主動角色,並不需要進行轉義。

  3. 如果要執行date命令,則必須使用命令替換$(...)

  4. 整個sed s命令應該在引號中,以便shell不會對其進行分詞。

+0

謝謝!在這種情況下,「分詞」是什麼意思? – byInduction

+0

歡迎您。對於原始命令,'sed'沒有看到完整的替換命令。相反,它將'/ \\ @ \\ @ DATENUMBER \\ @ \\ @/date'作爲其第一個參數,並將'+「%Y%m%d」/ g'作爲其第二個參數。任何時候你有一些東西都包含一個空格,並且你希望命令把它看作一個參數,它需要用引號括起來。 – John1024

+0

有關分詞的更多信息,請參閱例如[此答案](http://stackoverflow.com/a/18498494/3030305)。有關高級討論,請參閱[本FAQ](http://mywiki.wooledge.org/WordSplitting)。 – John1024

相關問題