Jordan Gloor / How-To GeekPerintah tr melakukan transformasi pada aliran teks, menghasilkan aliran baru sebagai outputnya. Anda dapat mengganti, menghapus, atau mengonversi karakter sesuai dengan aturan yang Anda tetapkan pada baris perintah.
Apakah Anda memerlukan metode tanpa embel-embel untuk memanipulasi aliran teks di Linux? Tidak terlihat lagi dari perintah tr, yang dapat menghemat waktu Anda dalam mengganti, menghapus, menggabungkan, dan mengompresi teks masukan. Begini caranya.
Apa Itu Perintah tr?
Itu mendapatkan namanya dari kata “menerjemahkan,” dan akar tr berjalan jauh di dalam tradisi Unix.
Seperti yang kita semua tahu, Linux adalah penulisan ulang open-source dari Unix. Itu juga menambahkan barang-barangnya sendiri ke dalam campuran. Ini bukan klon byte-untuk-byte, tetapi jelas membutuhkan banyak prinsip desain dan arahan teknik dari sistem operasi Unix.
Meskipun hanya dua distribusi Linux sejauh ini telah disertifikasi sebagai POSIX compliant dan dicap sebagai resmi diterima sebagai implementasi Unix—EulerOS dan Inspur K-UX—Linux hampir sepenuhnya menggantikan Unix di dunia bisnis.
Semua distribusi Linux, setidaknya dalam utilitas intinya, mematuhi filosofi Unix. Filosofi Unix merangkum visi para perintis Unix untuk sistem operasi baru mereka. Ini sering diparafrasekan sebagai “Tulis program yang melakukan satu hal dengan baik.” Tapi ada lebih dari itu.
Salah satu inovasi yang paling kuat adalah bahwa program harus menghasilkan keluaran yang dapat digunakan sebagai masukan untuk program lain. Kemampuan untuk menyatukan utilitas baris perintah daisy chain, menggunakan aliran output dari satu program sebagai aliran input ke program berikutnya, sangat kuat. Kadang-kadang Anda ingin menyempurnakan atau men-tweak output dari satu program sebelumnya mencapai program berikutnya sejalan. Atau mungkin Anda tidak mengambil input dari alat baris perintah Linux, Anda mengalirkan teks dari file yang belum dibuat dengan mempertimbangkan kebutuhan khusus Anda.
Di sinilah tr berperan. Ini memungkinkan Anda untuk melakukan serangkaian transformasi sederhana pada aliran inputnya, untuk menghasilkan aliran outputnya. Stream output tersebut dapat dialihkan ke dalam file, dimasukkan ke dalam program Linux lain, atau bahkan ke instance lain dari tr agar beberapa transformasi diterapkan ke stream.
Mengganti Karakter
Perintah tr beroperasi pada aliran inputnya sesuai aturan. Digunakan tanpa opsi baris perintah apa pun, tindakan default tr adalah mengganti karakter dalam input stream dengan karakter lain.
Perintah untuk tr biasanya membutuhkan dua set karakter. Set pertama menyimpan karakter yang akan diganti jika ditemukan di input stream. Set kedua berisi karakter yang akan diganti dengannya.
Cara kerjanya adalah kemunculan karakter pertama di set satu akan diganti dengan karakter pertama di set dua. Kemunculan karakter kedua di set satu akan digantikan oleh karakter kedua di set dua, dan seterusnya.
Contoh ini akan mencari huruf “c” di input stream menjadi tr, dan mengganti setiap kemunculan dengan huruf “z. ” Perhatikan bahwa tr peka huruf besar/kecil.
Kami menggunakan gema untuk mendorong beberapa teks ke tr .
echo abcdefabc | tr ‘c’ ‘z’
Semua kemunculan “c” diganti dengan “z” dan string baru ditulis ke jendela terminal.
Kali ini kita akan mencari dua huruf, “a” dan “c.” Perhatikan bahwa kami tidak mencari “ac”. Kami mencari “a”, lalu mencari “c”. Kami akan mengganti kemunculan “a” dengan “x” dan kemunculan “c” dengan “z.”
echo abcdefabc | tr ‘ac’ ‘xz’
Agar ini berfungsi, Anda harus memiliki jumlah karakter yang sama di kedua set. Jika tidak, Anda akan mendapatkan perilaku yang dapat diprediksi, tetapi mungkin tidak diinginkan.
eccho ‘panggil saya Ismael.’ | tr ‘abcdjklm’ ‘123’
Ada lebih banyak karakter di set satu daripada di set dua. Huruf “d” hingga “m” tidak memiliki karakter yang sesuai di set dua. Mereka masih akan diganti, tetapi semuanya diganti dengan karakter terakhir di set dua.
Mungkin saja ini berguna dalam beberapa kasus, tetapi jika Anda ingin mencegahnya, Anda dapat menggunakan -t (truncate) pilihan. Ini hanya menggantikan karakter yang terdapat di set satu yang memiliki karakter yang cocok di set two.
eccho ‘call me Ishmael.’ | tr -t ‘abcdjklm’ ‘123’
Menggunakan Rentang dan Token
Atur satu dan atur dua dapat berisi rentang karakter. Misalnya, [a-z] mewakili semua huruf kecil, dan [A-Z] mewakili semua huruf besar. Kita dapat menggunakan ini untuk mengubah huruf aliran teks.
Ini akan mengubah aliran input menjadi huruf besar.
echo “How-To Geek” | tr ‘[a-z]’ ‘[A-Z]’
Untuk membalik kasing ke arah lain, kita dapat menggunakan perintah yang sama tetapi dengan rentang huruf besar dan huruf kecil ditukar pada baris perintah.
echo “How-To Geek” | tr ‘[A-Z]’ ‘[a-z]’
Ada token yang dapat kita gunakan untuk beberapa kasus umum yang mungkin ingin kita cocokkan.
[:alnum:]: Huruf dan angka.[:alpha:]: Huruf only.[:digit:]: Digit saja.[:blank:]: Tab dan spasi.[:space:]: Semua spasi putih, termasuk karakter baris baru.[:graph:]: Semua karakter termasuk simbol, tetapi tidak termasuk spasi.[ :print:]: Semua karakter termasuk simbol, termasuk spasi.[:punct:]: Semua karakter tanda baca.[:lower:]: Huruf kecil.[:upper:]: Huruf besar.
Kita dapat mengubah huruf kecil menjadi huruf besar dan besar untuk konversi huruf kecil dengan mudah, menggunakan tokens.
echo “How-To Geek” | tr ‘[:lower:]’ ‘[:upper:]’echo “How-To Geek” | tr ‘[:upper:]’ ‘[:lower:]’
Membalikkan Kecocokan
Opsi -c (pelengkap) cocok dengan semua karakter selain yang ada di set pertama. Perintah ini mengubah semuanya selain huruf “c” menjadi tanda hubung ” – “.
echo abcdefc | tr -c ‘c’ ‘-‘
Perintah ini menambahkan huruf “a” ke set pertama. Apa pun selain “a” atau “c” diubah menjadi tanda hubung ” – ” character.
echo abcdefc | tr -c ‘ac’ ‘-‘
Menghapus dan Meremas Karakter
Kita dapat menggunakan tr untuk menghapus karakter sama sekali, tanpa penggantian apa pun.
Perintah ini menggunakan opsi -d (hapus) untuk menghapus kemunculan “a”, “d”, atau ” f” dari input stream.
echo abcdefc | tr -d ‘adf’
Ini adalah salah satu contoh di mana kita hanya memiliki satu set karakter pada baris perintah, bukan dua.
Lainnya adalah ketika kita menggunakan opsi -s (squeeze-repeats). Opsi ini mengurangi karakter berulang menjadi satu karakter.
Contoh ini akan mengurangi urutan berulang dari karakter spasi menjadi satu spasi.
echo “a b c de f c” | tr -s ‘[:blank:]’
Agak membingungkan bahwa token [:blank:] mewakili karakter spasi, dan token [:space:] mewakili semua bentuk spasi, termasuk tab dan karakter baris baru.
Dalam hal ini , kita dapat mengganti [:blank:] dengan [:space:] dan mendapatkan hasil yang sama.
echo “a b c de f c” | tr -s ‘[:space:]’
Menghapus Karakter
Perbedaan antara [:blank:] dan [:space:] menjadi jelas ketika kita menghapus karakter. Untuk melakukan ini, kami menggunakan opsi -d (delete), dan menyediakan sekumpulan karakter yang akan dicari tr dalam input stream-nya. Apa pun yang ditemukannya dihapus.
echo “a b c de f c” | tr -d ‘[:blank:]’
Spasi dihapus. Perhatikan bahwa kami mendapatkan baris baru setelah aliran keluaran ditulis di jendela terminal. Jika kita mengulangi perintah itu dan menggunakan [:space:] alih-alih kosong, kita akan mendapatkan hasil yang berbeda.
echo “a b c de f c” | tr -d ‘[:blank:]’
Kali ini kita tidak memulai baris baru setelah output, command prompt langsung disingkirkan. Ini karena [:space:] menyertakan baris baru. Setiap spasi, tab, dan karakter baris baru dihapus dari input stream.
Tentu saja, Anda juga dapat menggunakan karakter spasi yang sebenarnya.
echo “a b c de f c” | tr -d ‘ ‘
Kita dapat dengan mudah menghapus digits.
echo abcd123efg | tr -d ‘[:digit:]’
Dengan menggabungkan opsi -c (pelengkap) dan -d (hapus) kita dapat menghapus semuanya selain digits.
echo abcd123efg | tr -cd ‘[:digit:]’
Perhatikan bahwa segala sesuatu selain angka berarti semua huruf, dan semua spasi putih, jadi sekali lagi kita kehilangan baris baru terminasi. teks dan tempatkan setiap kata pada barisnya masing-masing.
echo ‘one two three four’ | tr ‘ ‘ ‘n’
Kita juga dapat mengubah pembatas yang memisahkan kata. Perintah ini menggantikan titik dua ” : ” untuk spasi.
echo ‘satu dua tiga empat’ | tr ‘ ‘ ‘:’
Kita dapat menemukan pembatas apa pun yang digunakan, dan menggantinya dengan karakter baris baru, memisahkan teks yang sulit dibaca menjadi keluaran yang lebih mudah dikelola.
Variabel lingkungan jalur adalah string panjang dari banyak jalur direktori. Tanda titik dua ” : ” memisahkan setiap jalur. Kami akan mengubahnya menjadi karakter baris baru.
echo $PATHecho $PATH | tr “:” “n”
Itu jauh lebih mudah untuk diuraikan secara visual.
Jika kita memiliki output yang ingin kita format ulang menjadi satu baris, kita juga bisa melakukannya. File “lines.txt” berisi beberapa teks, dengan satu kata di setiap baris. Kami akan memasukkannya ke tr dan mengubahnya menjadi satu baris.
cat files.txtcat lines.txt | tr ‘n’ ‘ ‘
Menggunakan tr With Pipes
Kita dapat menggunakan output dari tr sebagai input untuk program lain, atau bahkan ke tr itu sendiri.
Perintah ini menggunakan tr empat kali.
Tr pertama menghapus tanda hubung “-” dari input. Tr kedua meremas setiap spasi berulang menjadi satu spasi.Tr ketiga menggantikan spasi dengan karakter garis bawah “_”.Tr keempat dan terakhir mengonversi string menjadi huruf kecil.echo “Mangled File-nAMe.txt” | tr -d ‘-‘ | tr -s ‘ ‘ | tr’ ”_’ | tr ‘[:upper:]’ ‘[:lower:]’
Perintah tr bagus karena sederhana. Tidak banyak yang bisa dipelajari atau diingat. Tapi kesederhanaannya bisa menjadi kelemahannya juga. sedang berjuang untuk melakukan sesuatu dengan tr , dan Anda menemukan diri Anda membangun rangkaian perintah yang panjang, Anda mungkin harus menggunakan sed.
Disadur dari HowToGeek.com.