我意识到这个问题已经被问过很多次了,而且很多答案都写得很好,但我在我的小任务中遗漏了一些东西。尝试将 Shell 变量(本例中为参数)传递给 awk 以抓取文本文件的一部分。
cat ~/work/junk.txt
[Section1]
innerline1
innerline2
innerline3
[Section2]
innerline4
innerline5
innerline6
我正在尝试编写一个脚本来使用提供的参数($1)作为 awk 中匹配的模式传递。
#!/bin/bash
echo pattern is $1
# record separator (RS) is the next blank line
awk -v var="$1" {print '/var/'} RS= ~/work/junk.txt
如果 $1 是作为“Section1”提供的参数,我期望以下输出:
[Section1]
innerline1
innerline2
innerline3
我想我已经很接近了,但还很远。
感谢您的任何想法。
答案1
#!/bin/bash
echo "Pattern is ${1}"
awk -F'=' -v section="[$1]" -v f=0 '$0==section {f=1} $0=="" {f=0} f==1 {print}' input