awk正则表达式开始行锚定匹配空格

sas*_*rsl 4 regex bash awk

通过awk解析输入文件我遇到了awk中锚点的问题.

给出以下文件:

 2015
2015
test
 test
Run Code Online (Sandbox Code Playgroud)

用awk输出

$ awk '$1 ~ /^[0-9]/' file
 2015
2015
Run Code Online (Sandbox Code Playgroud)

用sed输出

$ sed -n '/^[0-9]/p' file
2015
Run Code Online (Sandbox Code Playgroud)

有人可以解释我在awk中看到的行为吗?

看到了

  • CentOS 7,GNU bash 4.2.46,GNU Awk 4.0.2
  • AIX 7,GNU bash 4.3.30,awk(AIX中的缺省版本)和gawk 4.0.2

anu*_*ava 5

您将了解这个awk命令的不同之处:

awk '/^[0-9]/' file
2015
Run Code Online (Sandbox Code Playgroud)

现在awk正在全线运行,就像sed而不仅仅是第一个字段.

$1 ~ /^[0-9]/只比较第一个字段,因为空格是awk中的默认字段分隔符,因此第一个字段2015位于两个行中,与之前的空格无关.