Perintah cut digunakan di sistem Linux dan Unix untuk memotong bagian dan bagian dari setiap baris file dan menulis hasilnya ke output standar. Hal ini dapat digunakan untuk memotong bagian dari baris dengan posisi byte, karakter dan bidang (pembatas).
Dalam tutorial ini, kita mempelajari perintah Linux cut dengan beberapa contoh praktis yang dapat Anda gunakan dalam aktivitas baris perintah sehari-hari.
Memotong Perintah dan Sintaks
Sintaks dasar untuk perintah cut adalah sebagai berikut:
cut OPTION... [FILE]...
Mari kita periksa opsi potong dan tanpa opsi apa pun, perintah potong tidak akan berfungsi.
Opsi Potong
-f
:Ekstrak dengan menentukan bidang. Perintah Cut menggunakan 'TAB' sebagai pembatas bidang default.
-d
:'Tab' adalah pembatas default dan menggunakan opsi ini Anda dapat menggunakan pembatas tertentu.
-b
:Untuk mengekstrak dengan menentukan byte. Rentang byte juga dapat ditentukan.
-c
:Untuk memotong berdasarkan karakter. Ini bisa berupa daftar angka yang dipisahkan koma atau rentang angka yang dipisahkan oleh tanda hubung (-).
–complement
:Ini akan melengkapi pilihan
–output-delimiter
:Untuk mengubah pembatas keluaran gunakan opsi -output-delimiter='delimiter'.
--only-delimited
:Cut tidak akan mencetak garis yang tidak mengandung pembatas
Kami akan menggunakan file teks berikut bernama 'content.txt' dan file /etc/passwd sepanjang tutorial ini untuk mengilustrasikan contoh kami.
$ cat content.txt
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD
Cara memotong dengan pembatas
Opsi potong yang paling umum digunakan adalah kombinasi -d
dan -f
. Ini pada dasarnya akan mengekstrak konten berdasarkan pembatas tertentu dan bidang yang terdaftar.
Misalnya berikut ini hanya mencetak bidang pertama dari setiap baris dari file '/etc/passwd' menggunakan pembatas (:).
$ cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
...
Contoh berikut di mana kita menggunakan spasi (" ") sebagai pembatas dan memotong bidang 1 dari file bernama 'content.txt'.
$ cut -d " " -f 1 content.txt
Ubuntu
Microsoft
OsX
Unix
FreeBSD
Contoh ini, mengekstrak lebih dari satu bidang dari file tertentu. Disini kita ekstrak field 1 dan 6 menggunakan pembatas titik dua (:) dari file '/etc/passwd' yang memiliki string '/bin/bash':
$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
root:/root
slax:/home/slax
Untuk menampilkan range field, tentukan field awal dan field akhir yang dipisahkan dengan tanda hubung (-) seperti yang ditunjukkan di bawah ini:
$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
slax:x:1000:1000:/home/slax:/bin/bash
Cara melengkapi pilihan keluaran
Untuk melengkapi daftar bidang pilihan gunakan --complement
pilihan. Opsi ini digunakan untuk memilih semua bidang kecuali bidang yang ditentukan.
Dalam contoh berikut perintah mencetak semua bidang kecuali bidang ke-2 dalam file dari '/etc/passwd':
$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
root:0:0:root:/root:/bin/bash
Cara menentukan pembatas keluaran
Untuk menentukan pembatas keluaran gunakan --output-delimiter
pilihan. Pembatas input ditentukan oleh -d
opsi dan secara default pembatas output sama dengan pembatas input.
Mari kita periksa outputnya terlebih dahulu tanpa menggunakan pembatas output sebagai berikut:
$ cut -d: -f1,7 /etc/passwd | sort | uniq -u
_apt:/usr/sbin/nologin
backup:/usr/sbin/nologin
bin:/usr/sbin/nologin
daemon:/usr/sbin/nologin
dnsmasq:/usr/sbin/nologin
games:/usr/sbin/nologin
gnats:/usr/sbin/nologin
irc:/usr/sbin/nologin
landscape:/usr/sbin/nologin
list:/usr/sbin/nologin
lp:/usr/sbin/nologin
lxd:/bin/false
Sekarang saya telah menambahkan --output-delimiter
option dan pembatas input titik dua (:) diganti dengan pembatas output 'SPACE" sebagai berikut:
$ cut -d: -f1,7 --output-delimiter ' ' /etc/passwd | sort | uniq -u
_apt /usr/sbin/nologin
backup /usr/sbin/nologin
bin /usr/sbin/nologin
daemon /usr/sbin/nologin
dnsmasq /usr/sbin/nologin
games /usr/sbin/nologin
gnats /usr/sbin/nologin
irc /usr/sbin/nologin
landscape /usr/sbin/nologin
list /usr/sbin/nologin
lp /usr/sbin/nologin
lxd /bin/false
Mari kita periksa contoh lain, di sini kita menggunakan pembatas keluaran untuk mencetak pada setiap bidang dalam baris baru.
Di sini kita menggunakan --output-delimiter
sebagai $’\n’
yang menunjukkan baris baru.
Periksa outputnya:
$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=
Cara memotong per karakter
-c
(kolom) opsi digunakan untuk memotong berdasarkan posisi karakter. Ingat bahwa 'TABS" dan 'Spasi' juga diperlakukan sebagai karakter.
Untuk mencetak karakter pertama dari setiap baris dari file bernama content.txt, gunakan di bawah ini:
$ cut -c 1 content.txt
U
M
O
U
F
Pada contoh berikut kita akan menampilkan karakter 1 sampai 7 (range) setiap baris dari file:
$ cut -c 1-7 content.txt
Ubuntu
Microso
OsX El
Unix
FreeBSD
Mari kita periksa cara memilih kolom berdasarkan posisi awal atau akhir tertentu.
Untuk mengekstrak kolom dari karakter ke-2 hingga karakter terakhir:
$ cut -c2- content.txt
buntu Linux
icrosoft Windows
sX El Capitan
nix
reeBSD
Untuk mengekstrak kolom dari karakter pertama ke karakter keempat:
cut -c-4 content.txt
Ubun
Micr
OsX
Unix
Free
Cara memotong per byte
Gunakan -b
opsi untuk memilih bagian dari baris dengan menentukan posisi byte dengan angka yang dipisahkan oleh koma (,). Dengan menggunakan tanda hubung, Anda dapat menentukan rentang byte.
Contoh berikut dipotong dari byte ke-1, ke-2 dan ke-3 dari file bernama 'content.txt':
$ cut -b 1,2,3 content.txt
Ubu
Mic
OsX
Uni
Fre
Kami juga dapat membuat daftar dengan rentang menggunakan perintah di bawah ini:
$ cut -b 1-3,5-7 content.txt
Ubutu
Micoso
OsXEl
Uni
FreBSD
Beberapa contoh potongan praktis
Cut paling praktis digunakan dengan kombinasi perintah Linux atau Unix yang berbeda.
Misalnya, Anda ingin mengekstrak 'USER', 'PID' dan "COMMAND" menggunakan perintah ps:
ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
USER PID COMMAND
0 676 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220
0 681 /sbin/agetty -o -p -- \u --noclear tty1 linux
0 23174 -bash
0 26737 ps -L u n
0 26738 tr -s
0 26739 cut -d -f 2,3,14-
Mari kita ambil contoh lain untuk mengekstrak nilai memori 'total', 'bekas' dan 'bebas' dan menyimpan ke file teks menggunakan beberapa perintah:
$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt
Output
$ cat memory.txt
985 86 234
Kesimpulan
Perintah cut dapat disalurkan dengan banyak perintah Linux atau Unix lainnya. Itu dapat disalurkan dengan satu atau beberapa filter untuk pemrosesan teks tambahan.
Salah satu keterbatasan perintah cut adalah tidak mendukung penetapan lebih dari satu karakter sebagai pembatas. Beberapa kosong dihitung sebagai beberapa pemisah bidang dan harus menggunakan perintah tr sebelum dipotong untuk mendapatkan hasil yang diinginkan.
\n' root /root /bin/bash operator /root /sbin/nologin
Cara memotong per karakter
-c
(kolom) opsi digunakan untuk memotong berdasarkan posisi karakter. Ingat bahwa 'TABS" dan 'Spasi' juga diperlakukan sebagai karakter.
Untuk mencetak karakter pertama dari setiap baris dari file bernama content.txt, gunakan di bawah ini:
Pada contoh berikut kita akan menampilkan karakter 1 sampai 7 (range) setiap baris dari file:
Mari kita periksa cara memilih kolom berdasarkan posisi awal atau akhir tertentu.
Untuk mengekstrak kolom dari karakter ke-2 hingga karakter terakhir:
Untuk mengekstrak kolom dari karakter pertama ke karakter keempat:
Cara memotong per byte
Gunakan
-b
opsi untuk memilih bagian dari baris dengan menentukan posisi byte dengan angka yang dipisahkan oleh koma (,). Dengan menggunakan tanda hubung, Anda dapat menentukan rentang byte.Contoh berikut dipotong dari byte ke-1, ke-2 dan ke-3 dari file bernama 'content.txt':
Kami juga dapat membuat daftar dengan rentang menggunakan perintah di bawah ini:
Beberapa contoh potongan praktis
Cut paling praktis digunakan dengan kombinasi perintah Linux atau Unix yang berbeda.
Misalnya, Anda ingin mengekstrak 'USER', 'PID' dan "COMMAND" menggunakan perintah ps:
Mari kita ambil contoh lain untuk mengekstrak nilai memori 'total', 'bekas' dan 'bebas' dan menyimpannya ke file teks menggunakan beberapa perintah:
Kesimpulan
Perintah cut dapat disalurkan dengan banyak perintah Linux atau Unix lainnya. Itu dapat disalurkan dengan satu atau lebih filter untuk pemrosesan teks tambahan.
Salah satu keterbatasan perintah cut adalah tidak mendukung penetapan lebih dari satu karakter sebagai pembatas. Beberapa kosong dihitung sebagai beberapa pemisah bidang dan harus menggunakan perintah tr sebelum dipotong untuk mendapatkan hasil yang diinginkan.
Linux