Bash, Linux, Server, Sysadmin, Tips

Text Manipulation Tools for Linux/Unix

Text Manipulation Tools ini adalah versi yang sedikit lebih rumit dari Text Viewing Tools. Pada waktu yang sebelumnya juga saya sudah sempat...

· 5 min read >
sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

Text Manipulation Tools ini adalah versi yang sedikit lebih rumit dari Text Viewing Tools. Pada waktu yang sebelumnya juga saya sudah sempat menulis tentang hal tersebut.

Baca: Text Viewing Tools for Read Files on Linux/Unix

Pada artikel kali ini saya akan menulis tentang penggunaan Text Manipulation Tools lebih jauh lagi. Sebetulnya text Viewing tools seperti cat dapat juga di gunakan untuk memanipulasi, contohnya dengan di tambahkan perintah |grep (argumen), hanya saja klasifikasinya memang masuk ke viewing tools.

Kali ini juga saya masih menggunakan sumber yang sama yakni dari situs tldp.org. Merujuk pada situs tersebut kita akan coba untuk mempelajari beberapa perintah, seperti sort, join, cut, ispell/aspell, tr, fmt, paste, expand, nl, dan perl (search and replace text).

#1 Text Manipulation Tools sort

sort dapat di gunakan untuk mengurutkan isi suatu file. Jika kita menggunakan perintah sort tanpa atribut apapun, maka sort akan mengurutkan isi file tersebut sesuai urutan abjad.

sort juga dapat di kombinasikan dengan pipe |” untuk menampilkan output suatu perintah. Untuk mengurutkan secara terbalik dapat menggunakan -r. Lalu perintah -g di gunakan untuk mengurutkan berdasarkan angka, dalam hal ini akan membaca secara keseluruhan bukan hanya digit pertama saja.

berikut contoh penggunaan sort;

sort contoh.txt

atau menggunakan pipe “|“;

cat contoh.txt | sort

Mengurutkan file sesuai abjad desc;

sort -r contoh.txt

#2 Text Manipulation Tools join

Seperti namanya join berarti gabung. Dengan join kita dapat membandingkan isi dua file. Sebagai contoh saya mempunyai dua buah file yaitu join1.txt dan join3.txt dengan isi yang identik sama. Lalu saya akan menggunakan perintah;

join join1.txt join3.txt

Karena isinya identik, maka terminal akan print semua isi file yang identik, sehingga di dapat hasil;

Nah lain hal jika dua buah file yang kita bandingkan memiliki isi yang tidak sama. Maka terminal hanya akan print isi file yang sama saja, dan memberikan pesan error bagian mana dari dua file tersebut yang tidak sama. Untuk kasus ini saya akan membandingkan file join1.txt dan join2.txt, dan di dapat hasil;

#3 cut

cut di gunakan untuk print beberapa bagian dari isi sebuah file. Misalkan saya mempunyai file contohlog.txt dengan isi sebagail berikut;

baris 1
baris 2
baris 3
baris 4
baris 5
baris 6
baris 7
baris 8
baris 9
baris 10
baris 11

Dari file tersebut yang ingin saya print hanya tulisan baris nya saja, tanpa angka. Maka saya akan menggunakan perintah;

cut -c 1-5 contoglog.txt

Lalu mendapatkan hasil sebagai berikut;

sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

Selain itu ada juga opsi lain dari cut yaitu opsi -d untuk menentukan delimiter atau pembatas.
Lalu ada juga opsi -f yang akan berguna pada teks dengan layout kolom yang di pisahkan menurut pembatas.

Kita akan coba menggabungkan opsi -d dan -f bersamaan untuk mengambil data user dari file /etc/passwd. Maka saya menggunakan perintah;

cut -d ':' -f 1 /etc/passwd

Sehingga akan di hasil kan print sebagai berikut;

Ada juga penggunaan ‘,‘ (tanda baca comma) yang di gunakan untuk memisahkan angka yang akan membuat kita dapat membaca secara spesifik pada kolom tertentu.

Saya akan coba mengambil data dari file /etc/passwd untuk mengetahui nama user dan lokasi home folder mereka. Maka saya akan menggunakan perintah;

cut -d ':' -f 1,6 /etc/passwd

Maka akan di dapatkan hasil sebagai berikut;

sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

#4 ispell/aspell

ispell atau aspell dapat kita gunakan untuk memperbaiki ejaan dari tiap kata yang terdapat dalam sebuah file. Ejaan ini sepertinya merujuk pada penulisan bahasa Inggris yang baik dan benar.

Ada beberapa opsi yang dapat kita gunakan dalam aspell, yaitu

  • -? : Untuk menampilkan cara menggunakan aspell
  • help : Untuk menampilkan panduan lengkap cara menggunakan aspell
  • -c : Untuk cek file
  • -a : Mode kompatibel antara aspell dan ispell

Berikut saat saya menggunakan aspell pada file contohlog.txt dengan perintah;

aspell -c contohlog.txt

Maka akan di dapat hasil sebagai berikut;

Seperti yang terlihat pada gambar di atas ada beberapa opsi untuk mengganti kata ‘baris’ menjadi kata lainnya, dalam hal ini di sediakan sebanyak sepuluh opsi. Untuk keluar dari jendela aspell kita dapat menekan tombol ‘x’ pada keyboard.

Di sisi lainnya ispell dapat di gunakan tanpa memasukan opsi perintah. Berikut contoh penggunaan perintah ispell;

ispell contohlog.txt

Kemudian akan mendapatkan hasil sperti berikut;

Pada dasarnya memiliki prinsip yang sama hanya saja berbeda dalam menggunakan perintah dan juga cara me-replace tiap kata. Seperti biasa untuk keluar dari jendela aspell kita dapat menekan tombol ‘x’ pada keyboard.

Ada juga penggunaan ispell secara langsung tanpa menambahkan opsi file. Dengan begitu kita akan masuk ke mode ispell dan dapat mengeceh apakah penulisan yang kita input sudah sesuai dengan ejaan bahasa Inggris yang baik atau perlu di koreksi lagi.

Dapat di perhatikan bahwa saat memasukan kata yang tidak ada dalam kosa kata bahasa Inggris seperti “kucing” maka akan mendapat pesan not found. Lalu jika memasukan kata yang kurang tepat, ispell akan memberikan pilihan kata yang mungkin dapat kita gunakan. Kemudian jika kata yang kita masukan ada dalam kosa kata bahasa Inggris, maka ispell akan memberikan tanda ok.

Jika sudah selesai menggunakan ispell kita dapat sudahi dengan menekan tombol ctrl+c.

#5 tr

Kita dapat menggunakan tr untuk mengganti isi suatu file dari huruf kecil menjadi kapital atau sebaliknya. Dengan begitu kita tidak harus menulis ulang semua isi file, cukup memasukan beberapa perintah sederhana seperti;

cat join1.txt | tr '[a-z]' '[A-Z]' > joinUppercase.txt

Dengan perintah di atas saya akan membuat isi file join1.txt yang awalnya kecil semua menjadi besar semua dan menyimpannya pada sebuah file baru joinUppercase.txt. Sehingga menghasilkan isi file seperti berikut;

Selain itu tr juga dapat di manfaatkan sebagai tools find and replace yang sangat baik. Berikut saya lampirkan contoh gambar;

Pada gambar di atas saya mampunyai file numbering.txt dengan isi deretan angka sembarang. Kemudian saya coba mengganti semua angka 2 menjadi 9 dengan bantuan tr dan menyimpan perubahan tersebut pada file newNumbering.txt.

#6 fmt

fmt adalah sebuah pemformatan teks sederhana. Misalkan saya mempunyai suatu file dengan spasi yang tidak beraturan. fmt akan bertugas untuk merapihkan spasi tersebut.

Ketentuannya yaitu untuk jarak antar kata akan di berikan satu spasi. Lalu untuk jarak antar kalimat akan di berikan dua spasi.

Berikut adalah contoh penggunaan fmt;

fmt -u format.txt

Kemudian mendapatkan hasil;

sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

#7 paste

Selanjutnya ada paste. paste di gunakan untuk print gabungan isi dari dua buah file berbeda. Nantinya isi file kedua akan berada di sebelah samping kanan dari isi file pertama. Untuk pengisian tiap baris juga sesuai dengan urutan.

Agar tidak semakin bingung coba perhatikan contoh di bawah. Saya mempunyai dua buah file berbeda, yaitu contohlog.txt dan join1.txt dengan isi yang berbeda pula.

sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

Kemudian kita akan gabungkan isi dari kedua file di atas menggunakan perintah;

paste contohlog.txt join1.txt

Sehingga mendapatkan output;

Update 02-09-2021

paste juga dapat di gunakan untuk menggabungkan beberapa baris kata atau kalimat dalam sebuah file menjadi satu baris kalimat utuh yang di pisahkan dengan tab.

Buatlah sebuat file baru bernama kucing.txt dengan isian sebagai berikut;

Persia
Domestik
Munchkin
Exotic
sphynx
scottish
Bengal

Buatlah isi file tersebut menurun ke bawah seperti pada contoh di atas, lalu gunakan atribut -s pada paste untuk membuat urutan di atas menjadi satu baris utuh.

paste -s kucing.txt

Perintah dengan menggunakan atribut -s adalah untuk membuatnya menjadi satu baris, namun hasilnya masih kurang enak di baca. Agar lebih enak untuk di baca, bisa menggunakan delimiter atau -d dan menambahkan spasi, dengan perintah;

paste -d ' ' -s kucing.txt

#8 expand

expand di gunakan untuk mengkonversi tab menjadi spasi. Kita dapat menggunakan opsi -t <num> untuk menentukan jumlah spasi.

Supaya lebih memperjelas perhatikan gambar berikut;

Pada gambar di atas ada kalimat yang saya pisahkan perkata menggunakan tab dan ada juga yang menggunakan spasi biasa. Target kita adalah membuat kalimat yang menggunakan tab agar tampak seperti menggunakan spasi.

Untuk itu kita memerlukan bantuan expand untuk melakukannya, dengan perintah;

expand -t 1 tabfile.txt

Dengan menggunakan opsi -t 1, kita akan memperoleh output berupa tiap kata akan mempunyai satu spasi;

sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

#9 nl

nl adalah singkatan dari Number Line. Dari namanya saja sudah dapat di tebak kalau perintah nl dapat di gunakan untuk memberi atribut nomor pada isi sebuah file pada tiap-tiap barisnya.

Biasanya saat menggunakan text editor seperti vi atau nano tidak di sertakan line number di dalamnya. Nah kamu dapat mengatasi hal tersebut dengan nl. Terutama bagi kamu yang menulis code pada terminal semacam bash/shell script, akan lebih mudah menemukan error dengan mengetahui error tersebut terletak pada baris keberapa.

Baca: Macam-macam Text Editor Pada Linux

Kita dapat menggunakan nl dengan perintah;

nl namafile.extention

Atau bisa juga di kombinasikan dengan cat;

cat namafile.extention |nl

Saya juga sudah menulis tentang penggunaan cat pada artikel Text Viewing Tools for Read Files on Linux/Unix. Berikut adalah hasil dari percobaan menggunakan nl;

sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

#10 perl, Text Manipulation Tools for Search and Replace

Fitur utama dari perl adalah kemampuannya untuk search dan replace suatu kata dalam sebuah file. Kita akan coba pada file contohlog.txt dan mengganti tulisan baris menjadi line dengan perintah;

perl -pi -e "s/baris/line/g;" contohlog.txt

Maka akan di dapat hasil seperti pada gambar berikut;

sort, join, cut, ispell/aspell, tr, paste, expand, nl, perl text manipulation manipulasi teks dengan linux

#11 wc (Update 02-09-2021)

Jika nl di gunakan untuk memberikan nomor baris pada tiap baris, wc dapat di gunakan untuk menghitung jumlah kata dalam suatu file. Kamu dapat mencoba dengan perintah;

wc /etc/passwd

Perintah di atas akan menampilkan hasil;

  31   43 1635 /etc/passwd

Jika hanya ingin menampilkan jumlah kata yang terdapat pada file /etc/passwd, maka gunakan perintah;

wc -w /etc/passwd

Maka output yang akan keluar hanya jumlah kata yang terdapat pada file /etc/passwd, seperti;

43 /etc/passwd

Kesimpulan Text Manipulation Tools

Dari beberapa percobaan di atas kita sudah mengetahui ada sebanyak sepuluh macam tools yang dapat kita gunakan untuk memanipulasi data suatu file. Sebetulnya ada juga beberapa tools seperti unexpand, uniq, dan chcase yang tidak saya bahas.

Hal tersebut karena saat saya mencoba tidak ada respon apapun, atau respon yang keluar tidak seperti yang di harapkan dan tidak sesuai dari deskripsi tools tersebut.

Silahkan teman-teman mencobanya sendiri dan berkreasi. Makin sering kita latihan maka kemungkinan untuk menjadi mahir semakin besar.

cara restore database mysql mariadb mysqldump aris krisna akm.web.id

Cara Restore Database MySQL

Aris krisna in Linux, Sysadmin, Ubuntu
  ·   1 min read
cara backup database mysql mariadb mysqldump aris krisna akm.web.id

Cara Backup Database MySQL

Aris krisna in Linux, Sysadmin, Ubuntu
  ·   1 min read

Leave a Reply

Your email address will not be published. Required fields are marked *