+ -
当前位置:首页 → 问答吧 → awk匹配,下面的两种方式,有什么区别?

awk匹配,下面的两种方式,有什么区别?

时间:2011-03-23

来源:互联网

一个用引号,一个用斜线:

  1. > echo "green" |awk '{ if($0 ~ "^green$" ) print $0 }'
  2. green
  3. > echo "green" |awk '{ if($0 ~ /^green$/) print $0 }'
  4. green
复制代码

作者: ljt2k   发布时间: 2011-03-23

回复 ljt2k


    前者是动态正则,后者是常量正则。

作者: blackold   发布时间: 2011-03-23

回复 blackold


    啥意思?

作者: expert1   发布时间: 2011-03-23

回复 expert1


    dynamic regexp,是指通过计算后得到的正则表达式,比如 ~ "..."(字符串计算), ~ a(变量计算)等。
    regexp constant,本身就是正则了。

  类似于数学中的常量和变量。

作者: blackold   发布时间: 2011-03-23

相对来说,动态正则比较复杂,就如数学的变量比常量复杂一样。
尽量使用正则常量,除非你清楚awk到底做了些什么。

比如要匹配字面的*:
动态正则: ~ "\\*"  ,不能使用 ~ "\*"
常量正则:~ /\*/

作者: blackold   发布时间: 2011-03-23

回复 blackold


    多谢黑哥!

作者: ljt2k   发布时间: 2011-03-23

热门下载

更多