我想在特定单词之间打印全文。这是我的要求。
“ 123.log”包含以下文本。
EBSPRODSTART
web logic server
Oracle database administration
Linux operating system
EBSPRODEND
web logic server
Oracle database administration
Linux operating system
“ EBSPROD”是数据库名称。此值将是一个输入参数。 例如
$ DBNAME=EBSPROD
$ echo $DBNAME
EBSPROD
$
正在尝试如下所示,但它没有显示任何值。
$ cat 123.log |sed -n '/^$DBNAMESTART$/,/^$DBANEMEND$/p'
如果直接传递DBNAME值,则会得到如下输出。
$ cat 123.log |sed -n '/^EBSPRODSTART$/,/^EBSPRODEND$/p'
web logic server
Oracle database administration
Linux operating system
$
注意:-每次执行脚本时,DBNAME的值都不相同。
答案 0 :(得分:1)
您的代码存在三个问题:
'...'
不会插值任何变量。为此,您需要"..."
。$DBNAMESTART
查找一个名为DBNAMESTART
的变量。您需要${DBNAME}START
。DBANEMEND
与DBNAMEEND
不同。因此:
sed -n "/^${DBNAME}START\$/,/^${DBNAME}END\$/p"