Você pode executar algo nos moldes de
perl -C -ne '/\p{Greek}/ and print'
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?
Você pode executar algo nos moldes de
perl -C -ne '/\p{Greek}/ and print'
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.
Tags text-processing unicode perl