将 Shell 变量传递给 awk

将 Shell 变量传递给 awk

我意识到这个问题已经被问过很多次了,而且很多答案都写得很好,但我在我的小任务中遗漏了一些东西。尝试将 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

相关内容