AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 522297
Accepted
flow2k
flow2k
Asked: 2019-06-02 01:06:55 +0800 CST2019-06-02 01:06:55 +0800 CST 2019-06-02 01:06:55 +0800 CST

`cat -v` para caracteres UTF não imprimíveis não ASCII

  • 772

cattem uma -vopção que converte caracteres não imprimíveis em sua notação de acento circunflexo (o que é útil se não queremos que o terminal interprete os caracteres de controle literalmente na catsaída).

Mas pelo que entendi, a notação de acento circunflexo se aplica apenas a caracteres não imprimíveis no alfabeto ASCII. E os caracteres não imprimíveis em UTF que não se enquadram em ASCII (por exemplo, https://www.compart.com/en/unicode/category/Cc )? Que notação será cat -vusada para exibi-los?

cat unicode
  • 1 1 respostas
  • 1809 Views

1 respostas

  • Voted
  1. Best Answer
    Michael Homer
    2019-06-02T01:21:56+08:002019-06-02T01:21:56+08:00

    Podemos gerar um arquivo contendo os primeiros 256 caracteres Unicode em UTF-8 com:

    python3 -c 'for x in range(0,255): print(chr(x), end="")' > unicode-file
    

    Isso inclui os controles não ASCII (C1) no Suplemento Latin-1 e também muitos caracteres de impressão.

    Agora podemos cat -v:

    ^@^A^B^C^D^E^F^G^H
    ^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_ !"#$%&'()*+,-./0123456789:;
    <=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~^?
    M-BM-^@M-BM-^AM-BM-^BM-BM-^CM-BM-^DM-BM-^EM-BM-^FM-BM-^GM-BM-^HM-BM-^I
    M-BM-^JM-BM-^KM-BM-^LM-BM-^MM-BM-^NM-BM-^OM-BM-^PM-BM-^QM-BM-^RM-BM-^S
    M-BM-^TM-BM-^UM-BM-^VM-BM-^WM-BM-^XM-BM-^YM-BM-^ZM-BM-^[M-BM-^\M-BM-^]
    M-BM-^^M-BM-^_M-BM- M-BM-!M-BM-"M-BM-#M-BM-$M-BM-%M-BM-&M-BM-'M-BM-(M-B
    M-)M-BM-*M-BM-+M-BM-,M-BM--M-BM-.M-BM-/M-BM-0M-BM-1M-BM-2M-BM-3M-BM-4M-B
    M-5M-BM-6M-BM-7M-BM-8M-BM-9M-BM-:M-BM-;M-BM-<M-BM-=M-BM->M-BM-?M-CM-^@
    M-CM-^AM-CM-^BM-CM-^CM-CM-^DM-CM-^EM-CM-^FM-CM-^GM-CM-^HM-CM-^IM-CM-^J
    M-CM-^KM-CM-^LM-CM-^MM-CM-^NM-CM-^OM-CM-^PM-CM-^QM-CM-^RM-CM-^SM-CM-^T
    M-CM-^UM-CM-^VM-CM-^WM-CM-^XM-CM-^YM-CM-^ZM-CM-^[M-CM-^\M-CM-^]M-CM-^^
    M-CM-^_M-CM- M-CM-!M-CM-"M-CM-#M-CM-$M-CM-%M-CM-&M-CM-'M-CM-(M-CM-)M-C
    M-*M-CM-+M-CM-,M-CM--M-CM-.M-CM-/M-CM-0M-CM-1M-CM-2M-CM-3M-CM-4M-CM-5M-C
    M-6M-CM-7M-CM-8M-CM-9M-CM-:M-CM-;M-CM-<M-CM-=M-CM->
    

    (Eu envolvi isso manualmente para que seja legível)

    Você pode ver que ele representa U+0080 no início da quarta linha, que é UTF-8 C2 80, como M-BM-^@. M-Brepresenta o byte C2: B é 0x42, então M-representa a configuração do bit alto (ou seja, adicionando 0x80). M-^@está fazendo o mesmo para um byte nulo (meta-ctrl-@) - a notação M-xand ^xé combinada.

    A mesma coisa acontecerá para todos os codepoints não ASCII, que consistirão inteiramente em bytes altos em UTF-8, ou todos os bytes 128-255 em qualquer outra codificação. Diferentes catimplementações podem ter seu próprio comportamento, pois -v não é uma opção padrão cat, mas tanto o GNU cat quanto as versões comuns do BSD se comportam dessa maneira.

    • 4

relate perguntas

  • a saída do dispositivo serial parece boa na tela gnu, mas distorcida usando cat

  • Não é possível digitar trema usando o teclado

  • Empilhe til e barra sobre a letra

  • cat heredocument copiou tudo, exceto a chamada de função

  • Como funciona este comando? mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc -l 1234 > /tmp/f

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve