我有一个由空行分隔的记录文件,如下所示:
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称它为
有什么帮助吗?
谢谢!
发布于 2020-12-06 09:28:42
这不是由脚本引起的(正如最初的问题标题所断言的那样):如果运行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的在线解释器中可以看到这一点
https://stackoverflow.com/questions/65163767
复制相似问题