awk正则表达式中的空白字符
发表于 : 2011-04-30 20:27
查找一行中的纯数字行(可以包括空格)
cat a
1 2 x
a b 1 2 f
2 3 4
23
上面 的空白全是空格
用grep '^\s*\([0-9]\s*\)*$' a,输出
2 3 4
23
结果正确
用awk '/^\s*([0-9]\s*)*$/' a,输出
23
漏掉了 2 3 4
用awk '/^ *([0-9] *)*$/' a (把\s用空格换掉)
输出
2 3 4
23
结果正确。
这是什么原因?难道在awk中\s不是表示所有的空白字符吗?
cat a
1 2 x
a b 1 2 f
2 3 4
23
上面 的空白全是空格
用grep '^\s*\([0-9]\s*\)*$' a,输出
2 3 4
23
结果正确
用awk '/^\s*([0-9]\s*)*$/' a,输出
23
漏掉了 2 3 4
用awk '/^ *([0-9] *)*$/' a (把\s用空格换掉)
输出
2 3 4
23
结果正确。
这是什么原因?难道在awk中\s不是表示所有的空白字符吗?