Como encontrar grego na linha de comando

1

Como posso usar perl na linha de comando para imprimir apenas linhas contendo Caracteres unicode grego? Por exemplo, apenas o segundo dos seguintes linhas

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

Deve ser possível usar \p{Greek} em vez do explícito intervalo (0370-03ff, 1f00-1fff).

Métodos sem perl também são bem-vindos, mas eu suspeito que sed, awk, grep não possa fazer isso?

    
por Toothrot 01.08.2018 / 22:32

2 respostas

1

Você pode executar algo nos moldes de

perl -C -ne '/\p{Greek}/ and print'
    
por 01.08.2018 / 23:31
1

Qual codificação você está usando? Se for UTF-8, você pode fazer:

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

Veja a opção -C em perlrun .

Se for outra codificação, você pode usar o open pragma para obter um controle mais detalhado.

Por exemplo, para ler e escrever UTF-16-LE:

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

Ou, para ler um arquivo UTF-16-LE e gerar uma saída em UTF-8:

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

Ou, para ler UTF-16-LE e escrever 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

Nesses dois últimos, observe que há uma distinção sutil, mas importante, entre perl ... input.txt >output.txt e perl ... <input.txt >output.txt , pois o último lê em STDIN , enquanto o antigo open s o arquivo, por isso é importante manter em mente qual dos fluxos você está mudando a codificação de.

    
por 01.08.2018 / 23:33