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がシェルによって展開されるように二重引用符を使用し、最後をエスケープしてシェル$によって展開されないようにします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 に答える