好的,所以我可以得到一个变量传递给awk但是当变量中有空格时它不会搜索任何东西,所以这里有一些代码
new="bob"
searc=`awk '/#'$new':/,/---/ {print $0}'` file.txt
echo "$searc"
应该显示类似这样的内容
#bob:
happy
fun
love
sun
------
所以第一个例子^工作得很好但是现在从未找到Luke Jackson这个名字存储在变量中的原因是因为它假设是动态的,所以它可以改变。现在我在这里错过了一些简单的东西,或者我不能这样做吗?
new="Luke Jackson"
searc=`awk '/#'$new':/,/---/ {print $0}'` file.txt
echo "$searc"
#Luke Jackson:
sad
fun
evil
moon
------
答案 0 :(得分:2)
如果您稍微重写脚本,则不会出现任何问题
$ awk -v name='Luke Jackson' '$0~"#"name":"{f=1} f && /----/{f=0} f' file
#Luke Jackson:
sad
fun
evil
moon
另请注意,也许您需要完全匹配,而不是模式匹配,在这种情况下使用==
答案 1 :(得分:0)
简单的sed也可以解决这个问题:
new='Luke Jackson'
sed -n "/#$new:/,/---/p" file
#Luke Jackson:
sad
fun
evil
moon
------