Ho difficoltà a comprendere questo paragrafo dalla sezione "RATIONALE" di http://pubs.opengroup.org/onlinepubs/9699919799/utilities/tr.html.Comportamento di tr -c -d durante l'eliminazione di byte con valori che non sono caratteri
L'ISO POSIX-2: 1993 standard aveva un opzione -c che si comportava in modo simile per l'opzione -C, ma non hanno fornito le stesse funzionalità della opzione -c specificato nel POSIX.1-2008. Ciò significava che la pratica storica di essere in grado di specificare tr -cd \ 000- \ 177 (che eliminerebbe tutti i byte con il bit più alto impostato) non avrebbe alcun effetto perché, nella locale C , i byte con i valori ottali 200 a ottali 377 non sono caratteri.
Tuttavia, il mio test sul sistema CentOS 6.5 sembra dimostrare che sembra avere un effetto.
$ export LC_ALL=C
$ export LANG=C
$ locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
$ printf "\x41\x42\x81\x82" | od -t x1
0000000 41 42 81 82
0000004
$ printf "\x41\x42\x81\x82" | tr -c -d "\000-\1777" | od -t x1
0000000 41 42
0000002
Il comando tr -c -d "\000-\1777"
rimosso il byte con valori \x81
e \x82
. Perché il risultato del mio test non è in accordo con ciò che è scritto nelle specifiche?
Non è detto che le implementazioni conformi alla versione del 1993 delle specifiche sarebbero state interrotte, ma le implementazioni precedenti (storiche) e le implementazioni conformi alle specifiche 2008 (e più recenti) avrebbero funzionato? O ho letto male qualcosa? –