3

我正在尝试在 Linux(Ubuntu)中使用 sed 删除文件的一部分。具体来说,我想删除日志文件的第一行,直到第一次出现当前系统日期(使用模式 '10 Jan 13')。

所以,我将日期存储在一个变量中

root@server:/# VAR_DATE=`date -R | cut -c6-11`

之后,我使用 sed

root@server:/# cat log_file.txt | sed -n -e '/$VAR_DATE/,$p'

但它不起作用。我已经尝试了很多具有相同结果的组合:

root@server:/# cat log_file.txt | sed -n -e '/"$VAR_DATE"/,$p'
root@server:/# cat log_file.txt | sed -n -e '/"${VAR_DATE}"/,$p'
root@server:/# cat log_file.txt | sed -n -e "/$VAR_DATE/,$p"

我做错了什么?

4

1 回答 1

0

使用双引号,以便变量$vardate被 shell 扩展并转义最后一个$,所以它不被 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
于 2013-01-10T09:43:51.750 回答