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

ANSIで引用された文字列は、任意のUnicodeコードポイントを受け入れないため、文字のUTF-8エンコーディングを指定する必要があることに注意してください。

于 2012-12-01T23:57:37.830 に答える