2013-01-10 64 views
2

我想在Linux(Ubuntu)中使用sed刪除文件的一部分。具體來說,我想刪除日誌文件的第一行,直到當前系統日期的第一次出現(使用模式'10 Jan 13')。使用變量sed

所以,我存儲在一個變量

[email protected]:/# VAR_DATE=`date -R | cut -c6-11` 

,之後的日子,我會用sed

[email protected]:/# cat log_file.txt | sed -n -e '/$VAR_DATE/,$p' 

但它不工作。我試了很多組合,結果相同:

[email protected]:/# cat log_file.txt | sed -n -e '/"$VAR_DATE"/,$p' 
[email protected]:/# cat log_file.txt | sed -n -e '/"${VAR_DATE}"/,$p' 
[email protected]:/# cat log_file.txt | sed -n -e "/$VAR_DATE/,$p" 

我在做什麼錯?

回答

0

使用雙引號,因此變量$vardate得到由外殼擴展,逃離最後$所以它不是由shell sed -n "/$vardate/,\$p" file擴展:

$ cat file 
6 Jan 13 
7 Jan 13 
8 Jan 13 
9 Jan 13 
10 Jan 13 
11 Jan 13 
12 Jan 13 
13 Jan 13 

$ vardate="10 Jan 13" 

$ sed -n "/$vardate/,\$p" file 
10 Jan 13 
11 Jan 13 
12 Jan 13 
13 Jan 13