Iya. Anda dapat melakukannya tr
dengan lokal ASCII (yang, untuk GNU tr
, jenis dari satu-satunya ruang lingkupnya) . Anda bisa menggunakan kelas POSIX, atau Anda bisa mereferensikan nilai byte dari setiap karakter dengan angka oktal. Anda dapat membagi transformasi mereka di seluruh rentang, juga.
LC_ALL=C tr '[:upper:]\0-\101\133-140\173-\377' '[:lower:][\n*]' <input
Perintah di atas akan mengubah semua karakter huruf besar menjadi huruf kecil, mengabaikan karakter huruf kecil seluruhnya, dan mengubah semua karakter lain menjadi baris baru. Tentu saja, maka Anda berakhir dengan satu ton garis kosong. The tr
-s
mengulangi queeze beralih dapat berguna dalam kasus itu, tapi jika Anda menggunakannya di samping [:upper:]
untuk [:lower:]
transformasi maka Anda berakhir meremas karakter huruf besar juga. Dengan cara itu masih membutuhkan filter kedua seperti ...
LC... tr ... | tr -s \\n
...atau...
LC... tr ... | grep .
... Dan akhirnya menjadi jauh lebih nyaman daripada melakukan ...
LC_ALL=C tr -sc '[:alpha:]' \\n <input | tr '[:upper:]' '[:lower:]'
... yang menekan -c
omplement karakter alfabet secara berurutan menjadi satu baris baru, kemudian melakukan transformasi atas ke bawah di sisi lain pipa.
Itu bukan untuk mengatakan bahwa rentang sifat itu tidak berguna. Hal-hal seperti:
tr '\0-\377' '[1*25][2*25][3*25][4*25][5*25][6*25][7*25][8*25][9*25][0*]' </dev/random
... bisa sangat berguna karena mengubah byte input ke semua digit pada spektrum spread nilai-nilainya. Buang tidak, mau tidak, kau tahu.
Cara lain untuk melakukan transformasi bisa melibatkan dd
.
tr '\0-\377' '[A*64][B*64][C*64][D*64]' </dev/urandom |
dd bs=32 cbs=8 conv=unblock,lcase count=1
dadbbdbd
ddaaddab
ddbadbaa
bdbdcadd
Karena dd
dapat melakukan keduanya unblock
dan lcase
konversi pada saat yang sama, bahkan mungkin untuk melewati banyak pekerjaan untuk itu. Tapi itu hanya bisa sangat berguna jika Anda dapat secara akurat memprediksi jumlah byte per kata - atau paling tidak dapat mengimbangi setiap kata dengan spasi sebelumnya ke jumlah byte yang dapat diprediksi, karena unblock
makan spasi tambahan di akhir setiap blok.