首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在awk中使用变量中的regex

在awk中使用变量中的regex
EN

Stack Overflow用户
提问于 2020-12-06 09:23:34
回答 1查看 34关注 0票数 0

我有一个由空行分隔的记录文件,如下所示:

代码语言:javascript
复制
ID0
field1
field2
field3

ID1
field1
field2
field3

ID2
field1
field2
field3

...

因此,为了根据ID获取记录的所有内容,我使用了awk 'BEGIN {RS=""} /ID1/' file

但是,问题是我想用脚本来实现,将id作为变量传递。

我已经像这样写了脚本(但它不能工作):

代码语言:javascript
复制
#! /usr/bin/awk -f

# Set Record Separator
BEGIN {RS=""}

# Search that record that contains the id
/id/

我用./script.awk -v id=ID1 file称它为

有什么帮助吗?

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2020-12-06 09:28:42

这不是由脚本引起的(正如最初的问题标题所断言的那样):如果运行awk -v id=ID1 'BEGIN {RS=""} /id/' file,您将看到相同的问题。您使用/id/的方式并不是查看名为id的变量;相反,它期望id是与之完全匹配的正则表达式。

不使用/varname/ (将varname本身视为正则表达式,而不是包含正则表达式的变量的名称),而使用$0 ~ varname

代码语言:javascript
复制
#! /usr/bin/awk -f

# Set Record Separator
BEGIN {RS=""}

# Search that record that contains the id
$0 ~ id

https://ideone.com/amz1u1的在线解释器中可以看到这一点

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65163767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档