GNU/Linux >> Znalost Linux >  >> Ubuntu

Tr:Převést apostrof na Ascii?

Snažím se převést pravou jednoduchou uvozovku na apostrof pomocí tr .

tr "`echo -e '\xE2\x80\x99'`" "`echo -e '\x27'`" < a > b

soubor s kódováním UTF-8 s názvem a který obsahuje tento příklad:

We're not a different species
“All alone?” Jeth mentioned.

OS X používá BSD tr a vytváří pěkný výsledek:

We're not a different species
“All alone?” Jeth mentioned.

Ubuntu používá GNU tr a výsledkem je tento ošklivý výsledek:

We'''re not a different species
''<9C>All alone?''<9D> Jeth mentioned.

Jak mohu provést tento převod v Ubuntu?

Přijatá odpověď:

Můžete zkusit nějaký jiný nástroj, například sed :

$ sed "s/’/'/g" <a
We're not a different species
“All alone?” Jeth mentioned.

Nebo, protože provádíme jednoduchý překlad, použijte y příkaz pro sed :

$ sed "y/’/'/" <a
We're not a different species
“All alone?” Jeth mentioned.

GNU tr pravděpodobně nefunguje, protože:

Aktuálně tr plně podporuje pouze jednobajtové znaky.
Nakonec bude podporovat vícebajtové znaky; když ano, -C volba způsobí, že doplní sadu znaků, zatímco -c způsobí, že doplní sadu hodnot. Toto rozlišení bude
důležité pouze v případě, že některé hodnoty nejsou znaky, a to je možné
pouze v národních prostředích používajících vícebajtové kódování, pokud vstup obsahuje
chyby kódování.

A je vícebajtový znak:

$ echo -n \' | wc -c
1
$ echo -n ’ | wc -c  
3

Ubuntu
  1. Převést Ubuntu Desktop 14.04 na server?

  2. Jak převést pás Png na GIF?

  3. Kde se vrací jiná cesta ke které?

  1. 3 různé metody upgradu Ubuntu na nejnovější verzi

  2. Různé způsoby instalace softwaru na Ubuntu Linux

  3. Jak převést zvukový soubor na Opus?

  1. Různé způsoby aktualizace Ubuntu 20.04 / 18.04

  2. Zkontrolujte verzi Ubuntu pomocí různých metod

  3. Nainstalovat jinou verzi balíčku?