12 Perintah Berguna Untuk Memfilter Teks untuk Operasi File yang Efektif di Linux


Pada artikel ini, kami akan mengulas sejumlah alat baris perintah yang bertindak sebagai filter di Linux. Filter adalah program yang membaca masukan standar, melakukan operasi padanya, dan menulis hasilnya ke keluaran standar.

Oleh karena itu, ini dapat digunakan untuk memproses informasi dengan cara yang ampuh seperti merestrukturisasi keluaran untuk menghasilkan laporan yang berguna, memodifikasi teks dalam file dan banyak tugas administrasi sistem lainnya.

Oleh karena itu, di bawah ini adalah beberapa filter file atau teks yang berguna di Linux.

1. Perintah Awk

Awk adalah bahasa pemindaian dan pemrosesan pola yang luar biasa, dapat digunakan untuk membuat filter yang berguna di Linux. Anda dapat mulai menggunakannya dengan membaca seri Awk Bagian 1 hingga Bagian 13 kami.

Selain itu, baca juga halaman manual awk untuk info lebih lanjut dan opsi penggunaan:

man awk

2. Perintah Sed

sed adalah editor aliran yang hebat untuk memfilter dan mengubah teks. Kami telah menulis dua artikel bermanfaat tentang sed, yang dapat Anda baca di sini:

  1. Cara menggunakan Perintah 'sed' GNU untuk Membuat, Mengedit, dan Memanipulasi file di Linux
  2. 15 Tip dan Trik Perintah 'sed' yang Berguna untuk Tugas Administrasi Sistem Linux Harian

Halaman manual sed telah menambahkan opsi dan instruksi kontrol:

man sed

3. Perintah Grep, Egrep, Fgrep, Rgrep

Filter ini menghasilkan garis yang cocok dengan pola tertentu. Mereka membaca baris dari file atau input standar, dan mencetak semua baris yang cocok secara default ke output standar.

Catatan: Program utamanya adalah grep, variasinya sama saja dengan menggunakan opsi grep tertentu seperti di bawah ini (dan masih digunakan untuk kompatibilitas ke belakang):

egrep = grep -E
fgrep = grep -F
rgrep = grep -r  

Di bawah ini adalah beberapa perintah dasar grep:

tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:

tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:

Anda dapat membaca lebih lanjut tentang Apa Perbedaan Antara Grep, Egrep dan Fgrep di Linux?.

4. Kepala Komando

head digunakan untuk menampilkan bagian pertama file, menghasilkan 10 baris pertama secara default. Anda dapat menggunakan flag -n num untuk menentukan jumlah baris yang akan ditampilkan:

tecmint@TecMint ~ $ head /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)

tecmint@TecMint ~ $ head  -n 5 /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

Pelajari cara menggunakan perintah head dengan perintah tail dan cat untuk penggunaan yang efektif di Linux.

5. Perintah ekor

tail menampilkan bagian terakhir (10 baris secara default) dari sebuah file. Gunakan tombol -n num untuk menentukan jumlah baris yang akan ditampilkan.

Perintah di bawah ini akan menampilkan 5 baris terakhir dari file yang ditentukan:

tecmint@TecMint ~ $ tail -n 5 /var/log/auth.log
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Selain itu, tail memiliki opsi khusus -f untuk melihat perubahan dalam file secara real-time (terutama file log).

Perintah berikut akan memungkinkan Anda memantau perubahan pada file yang ditentukan:

tecmint@TecMint ~ $ tail -f /var/log/auth.log
Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Bacalah halaman manual tail untuk daftar lengkap opsi penggunaan dan instruksi:

man tail

6. urutkan Perintah

sort digunakan untuk mengurutkan baris file teks atau dari input standar.

Di bawah ini adalah isi file bernama domains.list:

tecmint@TecMint ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com
windowsmint.com

Anda dapat menjalankan perintah pengurutan sederhana untuk mengurutkan konten file seperti:

tecmint@TecMint ~ $ sort domains.list
linuxsay.com
linuxsay.com
news.linux-console.net
news.linux-console.net
linux-console.net
linux-console.net
windowsmint.com
windowsmint.com

Anda dapat menggunakan perintah sort dengan banyak cara, baca beberapa artikel berguna tentang perintah sortir sebagai berikut:

  1. 14 Contoh Berguna dari Perintah 'sort' Linux – Bagian 1
  2. 7 Contoh Perintah 'sort' Linux yang Menarik – Bagian 2
  3. Cara Mencari dan Mengurutkan File Berdasarkan Tanggal dan Waktu Modifikasi
  4. Cara Mengurutkan Output Perintah 'ls' Berdasarkan Tanggal dan Waktu Terakhir Dimodifikasi

7. Perintah unik

Perintah uniq digunakan untuk melaporkan atau menghilangkan baris berulang, memfilter baris dari masukan standar dan menulis hasilnya ke keluaran standar.

Setelah menjalankan sort pada aliran masukan, Anda dapat menghapus baris berulang dengan uniq seperti pada contoh di bawah.

Untuk menunjukkan jumlah kemunculan suatu baris, gunakan opsi -c dan abaikan perbedaan huruf besar-kecil sambil membandingkan dengan menyertakan opsi -i:

tecmint@TecMint ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com

tecmint@TecMint ~ $ sort domains.list | uniq -c 
2 linuxsay.com
2 news.linux-console.net
2 linux-console.net
1 windowsmint.com 

Bacalah halaman manual uniq untuk informasi dan tanda penggunaan lebih lanjut:

man uniq

8. Perintah fmt

fmt pemformat teks sederhana yang optimal, memformat ulang paragraf dalam file tertentu dan mencetak hasilnya ke keluaran standar.

Berikut konten yang diekstrak dari file domain-list.txt:

1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

Untuk memformat ulang konten di atas ke daftar standar, jalankan perintah berikut dengan saklar -w yang digunakan untuk menentukan lebar garis maksimum:

tecmint@TecMint ~ $ cat domain-list.txt 
1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

tecmint@TecMint ~ $ fmt -w 1 domain-list.txt
1.linux-console.net 
2.news.linux-console.net 
3.linuxsay.com 
4.windowsmint.com

9. pr Perintah

Perintah pr mengonversi file teks atau input standar untuk pencetakan. Misalnya pada sistem Debian, Anda dapat membuat daftar semua paket yang diinstal sebagai berikut:

dpkg -l

Untuk mengatur daftar dalam halaman dan kolom yang siap dicetak, jalankan perintah berikut.

tecmint@TecMint ~ $ dpkg -l | pr --columns 3 -l 20  

2017-01-06 13:19                                                  Page 1


Desired=Unknown/Install ii  adduser		ii  apg
| Status=Not/Inst/Conf- ii  adwaita-icon-theme	ii  app-install-data
|/ Err?=(none)/Reinst-r ii  adwaita-icon-theme- ii  apparmor
||/ Name		ii  alsa-base		ii  apt
+++-=================== ii  alsa-utils		ii  apt-clone
ii  accountsservice	ii  anacron		ii  apt-transport-https
ii  acl			ii  apache2		ii  apt-utils
ii  acpi-support	ii  apache2-bin		ii  apt-xapian-index
ii  acpid		ii  apache2-data	ii  aptdaemon
ii  add-apt-key		ii  apache2-utils	ii  aptdaemon-data


2017-01-06 13:19                                                  Page 2


ii  aptitude		ii  avahi-daemon	ii  bind9-host
ii  aptitude-common	ii  avahi-utils		ii  binfmt-support
ii  apturl		ii  aview		ii  binutils
ii  apturl-common	ii  banshee		ii  bison
ii  archdetect-deb	ii  baobab		ii  blt
ii  aspell		ii  base-files		ii  blueberry
ii  aspell-en		ii  base-passwd		ii  bluetooth
ii  at-spi2-core	ii  bash		ii  bluez
ii  attr		ii  bash-completion	ii  bluez-cups
ii  avahi-autoipd	ii  bc			ii  bluez-obexd

.....

Bendera yang digunakan di sini adalah:

  1. --column mendefinisikan jumlah kolom yang dibuat pada output.
  2. -l menentukan panjang halaman (defaultnya adalah 66 baris).

10. tr Perintah

Alat ini menerjemahkan atau menghapus karakter dari input standar dan menulis hasilnya ke output standar.

Sintaks penggunaan tr adalah sebagai berikut:

tr options set1 set2

Lihatlah contoh di bawah ini, pada perintah pertama, set1( [:upper:] ) mewakili huruf besar/kecil dari karakter input (semua huruf besar).

Kemudian set2([:lower:]) mewakili kasus di mana karakter yang dihasilkan akan berada. Hal yang sama terjadi pada contoh kedua dan urutan escape \n berarti keluaran cetak pada baris baru:

tecmint@TecMint ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
linux-console.net

tecmint@TecMint ~ $ echo "news.linux-console.net" | tr [:lower:] [:upper:]
NEWS.TECMINT.COM

11. lebih banyak perintah

Perintah more adalah filter penelusuran file berguna yang dibuat pada dasarnya untuk melihat sertifikat. Ini menampilkan konten file dalam format seperti halaman, di mana pengguna dapat menekan [Enter] untuk melihat informasi lebih lanjut.

Anda dapat menggunakannya untuk melihat file besar seperti:

tecmint@TecMint ~ $ dmesg | more
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
--More--

12. Kurangnya perintah

kurang adalah kebalikan dari perintah lebih di atas tetapi perintah ini menawarkan fitur tambahan dan sedikit lebih cepat dengan file besar.

Gunakan dengan cara yang sama seperti lainnya:

tecmint@TecMint ~ $ dmesg | less
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
:

Pelajari Mengapa Perintah 'kurang' Lebih Cepat Daripada 'lebih' untuk navigasi file yang efektif di Linux.

Itu saja untuk saat ini, beri tahu kami alat baris perintah berguna apa pun yang tidak disebutkan di sini, yang berfungsi sebagai filter teks di Linux melalui bagian komentar di bawah.