【问题标题】:searching words in Greek in Unix and Perl在 Unix 和 Perl 中搜索希腊语单词
【发布时间】:2013-02-28 22:47:37
【问题描述】:

我有希腊语的 txt 文件,现在我想使用 perl 和 bash 搜索其中的特定单词......这些单词就像 ?a?, t?, e??

我正在搜索英语单词,现在想用希腊语替换它们,但我得到的只是 ???主要是……对于 Perl:

my %word = map { $_ => 1 } qw/name date birth/;

对于 bash

for X in name date birth
do

有人可以帮帮我吗?

【问题讨论】:

  • 您应该向我们提供有关您的问题的更多信息。您的文本文件的编码是什么,您的语言环境设置的编码是什么?

标签: perl unix special-characters


【解决方案1】:
#!/usr/bin/perl
use strict;
use warnings;

# Tell Perl your code is encoded using UTF-8.
use utf8;

# Tell Perl input and output is encoded using UTF-8.
use open ':std', ':encoding(UTF-8)';

my @words = qw( καί τό εἰς );

my %words = map { $_ => 1 } @words;
my $pat = join '|', map quotemeta, keys %words;

while (<>) {
   if (/$pat/) {
      print;
   }
}

用法:

script.pl file.in >file.out

注意事项:

  • 确保源代码使用 UTF-8 编码并且您使用 use utf8;
  • 确保使用use open 行并为数据文件指定适当的编码。 (如果不是 UTF-8,请更改它。)

【讨论】:

  • 你确定他的文件是utf-8编码的吗?我的猜测是它相当 ISO 8859-1 或类似的东西,因此整个麻烦。
  • @mikyra,我告诉他他需要什么。任何偏差都可能是麻烦。他有 4 种方式可以偏离。猜测他弄错了哪些组合是没有用的。
  • 对不起,新的编码,所以不知道我用记事本++写它
  • @ikegami:当我想把它放在文件中时,我得到以下 'qw/?a?, t?, e??/;'
  • 您的意思是当您将文本粘贴到您的编辑器中时,您的编辑器中会出现这样的内容?抱歉,我不使用 Notepad++,所以无法帮助您解决编辑器的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2012-02-11
  • 1970-01-01
相关资源
最近更新 更多