我正在尝试使用:
sed -n '/String1/,/String2/p' Filename
打印 String1 和 String2 之间的所有行。虽然我想添加 String1 作为用户输入,所以,
read $userinput
sed -n '/$userinput/,/String2/p' Filename.
但由于输入在引号内,因此被读取为字符串$userinput
而不是给定的输入。
答案1
简单地像这样:
read userinput # without sigil '$'
sed -n "/$userinput/,/String2/p" file # with double quotes
学习如何在shell中正确引用,这非常重要:
“双引号”包含空格/元字符的每个文字以及每一个扩张:
"$var"
,"$(command "$var")"
,"${array[@]}"
,"a & b"
。用于'single quotes'
代码或文字$'s: 'Costs $5 US'
,ssh host 'echo "$HOSTNAME"'
.看
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words