Kali ini kita akan membahas tentang cara melakukan filter terhadap output dari suatu perintah. Berikut adalah beberapa perintah yang akan kita pelajari:
cut
awk
grep
egrep
sort
uniq
wc
Dummy File
Agar mempermudah pembelajaran saya telah membuatkan dummy file untuk kita berlatih.
list-name.txt
Muhammad Aprian
Figit Hasan
Hilmi Arie
Iqbal Beryl
Dikdik Hilmi
J Kevin
Muhamad Rijalul
Nita Putri
Asyilla Rohmah
Fahri Doni
Hilmi Arie
Anisa Putri
Putra Rizki
Muhammad Rizky
cut - Command
Perintah cut digunakan untuk memotong bagian dari setiap baris sebuah file. Pemotongan ini bisa ditentukan oleh delimiter, karakter, atau byte.
Berikut adalah contoh penggunaan dari perintah cut:
cut FILE # tidak berjalan
cut --version # cek versi
cut -c1 FILE # menampilkan first latters
cut -c1,2,4 FILE # menampilkan latters yang diinginkan (1,2,4)
cut -c1-3 FILE # range 1-3
cut -c1-3,6-8 FILE # spesifik range
cut -b1-3 FILE # byte characters
cut -d: -f 6 /etc/passwd # delimiter + field
cut -d: -f 6-7 /etc/passwd # delimiter + field
ls -l | cut -c2-4 # only print permisson for user
Perhatikan contoh di atas, saya hanya menampilkan huruf ke-1 dan ke-3 sampai ke-8.
Kita juga bisa menggabungkan perintah lain dengan perintah cut. Contohnya adalah kita hanya ingin menampilkan hak akses dari pemilik suatu file atau direktori saja, seperti berikut:
Hal lain yang bisa dilakukan adalah kita bisa menentukan pembatas (delimiter), lalu menampilkan field tertentu dari pembatas tersebut. Contohnya, file /etc/passwd menggunakan tanda : sebagai pemisah data/field. Dengan perintah cut kita bisa menampilkan field tertentu dari suatu file:
Terlihat bahwa saya hanya ingin menampilkan path home dari setiap user.
awk - Command
Perintah awk adalah utilitas yang dirancang untuk ekstraksi data. Perintah ini sangat powerful dan sering digunakan.
Berikut adalah contoh penggunakan perintah awk:
awk --version # cek version
awk '{print $1}' FILE # print field/kata pertama
ls -l | awk '{print $1,$3}' # print field ke-1 dan 3
ls -l | awk '{print $NF}'
awk '/jerry/' '{print}' FILE # search spesifik kata from file
awk -F: '{print $1}' /etc/passwd # set field
echo "Hello Tom" | awk '{$2="Adam"; print $0}' # replace words fields wordls // $0 apapun yang ditemukan dicetak
cat FILE | awk '{$2="Aprian"; print $2}' # contoh
awk 'length($0) > 15' FILE # get lines that have more than 15 byte size
ls -l | awk '{if($9 == "seinfeld") print $0}' # cari direktori/file yang pake kata "seinfeld"
ls -l | awk '{print NF}' # print jumlah fields
Pembatas antar field secara default adalah spasi atau TAB.
grep - Command
Perintah grep yang merupakan singkatan dari "global regular expression print", memproses baris demi baris teks dan mencetak setiap baris yang cocok dengan pola yang ditentukan.
grep --version
grep --help
grep keyword FILE # filter keyword
grep -c keyword FILE # (count) jumlah filter keyword
grep -i Keyword FILE # ignore case-sensitive
grep -n keyword FILE # show number line
grep -v keyword FILE # except keyword
grep keyword file | awk '{print $1}' | cut -c1-3 # menampilkan first field dari baris yang mengandung keyword
ls -l | grep Desktop
egrep - Command
Sama seperti grep, hanya saja egrep bisa menambahkan lebih dari satu keyword.
egrep -i "keyword1|keyword2" FILE # search for 2 keywords
egrep -i "keyword1|keyword2|keyword3" FILE # search for 3 keywords
sort - Command
Perintah sort berfungsi untuk mengurutkan output sesuai abjad.
sort --version # cek versi
sort --help # help
sort FILE # megurutkan a-z
sort -r FILE # mengurutkan z-a (reverse)
sort -k2 FILE # mengurutkan berdasarkan field ke-2
uniq - Command
Perintah uniq digunakan untuk memfilter baris yang sama atau duplikat.
uniq FILE # remove duplicate
sort FILE | uniq # sort terlebih dahulu sebelum remove duplicate
sort FILE | uniq -c # cek jumlah kata duplicate
sort FILE | uniq -d # show only duplicate
wc - Command
Menghitung output atau isi dari file berdasarkan jumlah baris, kata dan byte.
wc --version # cek version
wc --help # helping
wc FILE # baris-jumlah kata-byte
wc -l FILE # hanya baris
wc -w FILE # hanya words
wc -c FILE # hanya bytes
wc DIRECTORY # not allowed
ls -l | wc -l # number of files
ls -l | grep "drw" | wc -l # number of keyword lines