Grep

如何使用 unicode 值 grep 字元?

  • January 13, 2020

我在文本文件中有 Unicode 字元 ᚠ,由其 Unicode 程式碼點 16A0 表示(文本文件被編碼(?)為 utf-8)。

當我這樣做時,grep '\u16A0' test.txt我沒有得到任何結果。我如何 grep 那個字元?

您可以使用ANSI-C 引用來替換 ANSI C 標準指定的反斜杠轉義字元。

grep $'\u16A0'

對於一些更複雜的範例,您可以參考這個相關問題及其答案。

您可以使用ugrep作為 grep 的替代品來匹配 Unicode 程式碼點 U+16A0:

ugrep '\x{16A0}' test.txt

它採用與 grep 相同的選項,但提供了更多功能,例如:

ugrep 搜尋 UTF-8/16/32 輸入和其他格式。選項 -Q 允許搜尋許多其他文件格式,例如 ISO-8859-1 到 16、EBCDIC、程式碼頁 437、850、858、1250 到 1258、MacRoman 和 KIO8。

ugrep預設匹配 Unicode 模式(使用 -U 選項禁用)。正則表達式模式語法是符合 POSIX ERE 的擴展,具有類似 PCRE 的語法。選項 -P 也可用於與 Unicode 模式匹配的 Perl。

有關詳細資訊,請參閱GitHub 上的 ugrep

引用自:https://unix.stackexchange.com/questions/523327