加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用于获取匹配的正则表达式的一部分的awk语法

发布时间:2020-12-13 22:53:48 所属栏目:百科 来源:网络整理
导读:我确定这很容易,所以道歉.在Perl中我可能会做类似的事情 my $str = "foo=23";$str ~= m/foo=([0-9]+)/print "foo value is " . $1 即在正则表达式中使用括号,以便稍后可以将部分匹配称为$1,$2等. awk中的等价物是什么? 在GNU awk中,它是: $cat tst.awkBEGI
我确定这很容易,所以道歉.在Perl中我可能会做类似的事情
my $str = "foo=23";
$str ~= m/foo=([0-9]+)/
print "foo value is " . $1

即在正则表达式中使用括号,以便稍后可以将部分匹配称为$1,$2等.
awk中的等价物是什么?

在GNU awk中,它是:
$cat tst.awk
BEGIN {
   str = "foo=23"
   val = gensub(/foo=([0-9]+)/,"1","",str)
   print "foo value is " val
}
$
$gawk -f tst.awk
foo value is 23

在其他awk中你需要使用[g] sub()和/或match()和/或substr(),这取决于你做/不想匹配的其他内容.例如:

$cat tst.awk
BEGIN {
   str = "foo=23"
   val = substr(str,match(str,/foo=[0-9]+/)+length("foo="))
   print "foo value is " val
}
$awk -f tst.awk
foo value is 23

如果目标模式不在一行的末尾,则在substr()调用上需要第三个’,RLENGTH-length(“foo =”)’arg.如果你愿意,可以将“foo =”变成一个变量,如果它本身可以包含RE,那么还需要一些步骤.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读