grep 对鱼的奇怪行为 shell
Strange grep behaviour on fish shell
cat > abc.txt <<EOF
2014-04-11 00:00:00
2014-02-19 00:22:00
EOF
当我执行
grep -E :[0-9]{2}: abc.txt
我明白了
2014-02-19 00:22:00
我很期待
2014-04-11 00:00:00
2014-02-19 00:22:00
这发生在鱼 shell (2.4.0) 上,在 bash 上它工作正常。我对这里发生的事情很感兴趣
在 fish {a,b,c}
中是一个枚举器。文档中的使用示例:
$ echo input.{c,h,txt}
input.c input.h input.txt
因此,您的正则表达式扩展为 :[0-9]2:
:
$ echo :[0-9]{2}:
:[0-9]2:
$ echo :[0-9]{2,3,4}:
:[0-9]2: :[0-9]3: :[0-9]4:
转义花括号以避免这种情况:
$ echo :[0-9]\{2\}:
:[0-9]{2}:
或者,按照 Fredrik 的建议,引用整个正则表达式:
$ echo ':[0-9]{2}:'
:[0-9]{2}:
cat > abc.txt <<EOF
2014-04-11 00:00:00
2014-02-19 00:22:00
EOF
当我执行
grep -E :[0-9]{2}: abc.txt
我明白了
2014-02-19 00:22:00
我很期待
2014-04-11 00:00:00
2014-02-19 00:22:00
这发生在鱼 shell (2.4.0) 上,在 bash 上它工作正常。我对这里发生的事情很感兴趣
在 fish {a,b,c}
中是一个枚举器。文档中的使用示例:
$ echo input.{c,h,txt}
input.c input.h input.txt
因此,您的正则表达式扩展为 :[0-9]2:
:
$ echo :[0-9]{2}:
:[0-9]2:
$ echo :[0-9]{2,3,4}:
:[0-9]2: :[0-9]3: :[0-9]4:
转义花括号以避免这种情况:
$ echo :[0-9]\{2\}:
:[0-9]{2}:
或者,按照 Fredrik 的建议,引用整个正则表达式:
$ echo ':[0-9]{2}:'
:[0-9]{2}: