通过awk解析输入文件我遇到了awk中锚点的问题。
给出以下文件:
2015
2015
test
test
使用awk输出
$ awk '$1 ~ /^[0-9]/' file
2015
2015
使用sed输出
$ sed -n '/^[0-9]/p' file
2015
有人可以解释我在awk中看到的行为吗?
见
答案 0 :(得分:5)
您将了解与此awk命令的区别:
awk '/^[0-9]/' file
2015
现在awk正在全线运行,就像sed而不仅仅是第一个字段。
$1 ~ /^[0-9]/
仅比较第一个字段,因为空格是awk中的默认字段分隔符,因此第一个字段在两行中都是2015
,而不管它之前的空格。
答案 1 :(得分:4)
问题是你正在挑选第一个字段。
你应该做awk '/^[0-9]/' file
与整行匹配。
更确切地说:
awk '$0 ~ /^[0-9]/' file
是你想要的,因为$0
就是整行。