명령줄에서 Perl을 사용하여 그리스어 유니코드 문자가 포함된 줄만 인쇄하려면 어떻게 해야 합니까? 예를 들어, 다음 줄 중 두 번째 줄만
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
다른 인코딩인 경우 사용할 수 있습니다.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