从命令行查找希腊语

从命令行查找希腊语

如何在命令行上使用 perl 只打印包含希腊语 unicode 字符的行?例如,仅以下行中的第二行

  hullo, world
  χαῖρε, ὦ κόσμε

应该可以使用\p{Greek}而不是明确的范围(0370-03ff、1f00-1fff)。

不使用 perl 的方法也受欢迎,但我怀疑 sed、awk、grep 不能做到这一点?

答案1

你可以按照以下方式运行一些东西

perl -C -ne '/\p{Greek}/ and print'

答案2

您使用哪种编码?如果是UTF-8,你可以这样做:

perl -CSD -ne 'print if /\p{Greek}/' input_utf8.txt >output_utf8.txt

请参阅-C在 perlrun 中切换

如果是其他编码,您可以使用open杂注以进行更详细的控制。

例如,读取和写入 UTF-16-LE:

perl -Mopen=':std,:encoding(UTF-16-LE)' -ne 'print if /\p{Greek}/' input_utf16le.txt >output_utf16le.txt

或者,读取 UTF-16-LE 文件并以 UTF-8 输出:

perl -Mopen=':encoding(UTF-16-LE)' -CS -ne 'print if /\p{Greek}/' input_utf16le.txt >output_utf8.txt

或者,读取 UTF-16-LE 并写入 UTF-16-BE:

perl -Mopen=':std,:encoding(UTF-16-BE),IN,:encoding(UTF-16-LE)' -ne 'print if /\p{Greek}/' input_utf16le.txt >output_utf16be.txt

perl ... input.txt >output.txt对于后两者,请注意和之间存在微妙但重要的区别perl ... <input.txt >output.txt,因为后者从 读取STDIN,而前者open读取文件,因此请务必记住要更改哪个流的编码。

相关内容