0

假设我有以下正则表达式grep

grep -E 'head \x1E tail'

我可以grep使用其个人转义码来识别非 ascii 字符,\x.

我可以在不调用任何外部程序的情况下对 Bash 做同样的事情吗?Bash 提供了 3 种匹配正则表达式的模式:

  1. 普通路径名扩展
  2. extglob 路径名扩展
  3. [[ 字符串 =~ 正则表达式 ]]

这些似乎都不支持 UTF 转义码,也不支持 Bash 本身。

4

1 回答 1

1

在 bash 中,您可以使用 ANSI 引用的字符串:

$ x=éclair
$ [[ $x =~ $'\xc3\xa9' ]] && echo matched
matched

请注意,您必须指定字符的 UTF-8 编码,因为 ANSI 引用的字符串不接受任意 Unicode 代码点。

于 2012-12-01T23:57:37.830 回答