当前位置: 技术问答>linux和unix
awk如何匹配以#开头的字符串?
来源: 互联网 发布时间:2015-11-02
本文导语: 我想在一个文件里依次读入一行,如果这行以#开头就将其忽略。 我写的语句如下: cat /filename | awk 'BEGIN {i=0}{if("$1"!~/#*/) i+=1} END {print i}' ~~~~~~~~~~...
我想在一个文件里依次读入一行,如果这行以#开头就将其忽略。
我写的语句如下:
cat /filename | awk 'BEGIN {i=0}{if("$1"!~/#*/) i+=1} END {print i}'
~~~~~~~~~~
我写这个语句的本意是:如果第一个域不是以#开头的话 i就加1。if里面我的本意是用正则表达式来做。
我将/#*/认为是以#开头的字符串
但是结果不对:(
小弟新学shell 编程,忘大虾赐教!
我写的语句如下:
cat /filename | awk 'BEGIN {i=0}{if("$1"!~/#*/) i+=1} END {print i}'
~~~~~~~~~~
我写这个语句的本意是:如果第一个域不是以#开头的话 i就加1。if里面我的本意是用正则表达式来做。
我将/#*/认为是以#开头的字符串
但是结果不对:(
小弟新学shell 编程,忘大虾赐教!
|
cat ./filename | awk 'BEGIN {i=0}{if($1 !~ /^#/) i+=1} END {print i}'
这个脚本应该这样写
这个脚本应该这样写
|
正则表达式:/#*/,它是意思是匹配0或多个字符"#",这里"*"的含义和DOS下文件匹配的"*"的含义不一样.这里的意思是"0或多个前面的字符".而不是"0或多个字符",把:/#*/改成:/#.*/应该可以了.
|
用if (substr($1, 1, 1) == "#")判断不就可以了么!!!