我有一个文件,其中的记录用空行分隔,类似于以下内容:
ID0
field1
field2
field3
ID1
field1
field2
field3
ID2
field1
field2
field3
...
因此,为了根据ID获取记录的所有内容,我使用awk 'BEGIN {RS=""} /ID1/' file
但是,问题是,我想用一个脚本来制作它,将id作为变量传递。
我已经写了这样的脚本(但它不起作用(:
#! /usr/bin/awk -f
# Set Record Separator
BEGIN {RS=""}
# Search that record that contains the id
/id/
我称之为./script.awk -v id=ID1 file
有什么帮助吗?
谢谢!
这不是由脚本中引起的(正如最初的问题标题所断言的那样(:如果您运行awk -v id=ID1 'BEGIN {RS=""} /id/' file
,您会看到同样的问题。使用/id/
的方式不是查看名为id
的变量;相反,它期望id
是要匹配的精确正则表达式。
不使用/varname/
(它将varname
本身视为正则表达式,而不是包含正则表达式的变量的名称(,而是使用$0 ~ varname
:
#! /usr/bin/awk -f
# Set Record Separator
BEGIN {RS=""}
# Search that record that contains the id
$0 ~ id
请参阅在线翻译中演示的内容https://ideone.com/amz1u1