我有以下bash脚本:
cat test | awk '/^[A-Z]/ {print NF}'
我们假设测试内容如下:
This one yes
this one no
This one yes
this one no
原则上它应该打印第一行和第三行的字段数,因为我正在寻找以大写字母开头的行。但是,结果是打印文件中所有行的字段数。 如果我尝试使用相同的正则表达式的grep,结果就是我期望的结果。
另外,如果不是放[A-Z],而是写[[:upper:]],脚本可以完美地运行。
我的问题是:为什么在第一种情况下它不起作用?
答案 0 :(得分:4)
这是您的区域设置。谷歌语言环境。设置LC_ALL = C得到一个普通的,但使用字符类是正确的方法。