Secara umum, semakin khusus suatu alat, semakin cepat itu. Jadi dalam kebanyakan kasus, Anda bisa berharap cut
dan grep
menjadi lebih cepat daripada sed
, dan sed
lebih cepat daripada awk
. Jika Anda mengimbangi pipeline yang lebih panjang dari alat yang lebih sederhana dengan satu permintaan alat yang lebih kompleks, tidak ada aturan praktis. Ini hanya masalah dengan input besar (katakanlah, jutaan baris); untuk input pendek, Anda tidak akan melihat perbedaan.
Keuntungan dari alat yang lebih kompleks tentu saja mereka dapat melakukan lebih banyak hal.
Perintah Anda menggunakan kucing tidak perlu. Gunakan pengalihan saja (terutama jika Anda khawatir tentang kecepatan, meskipun Anda mungkin tidak perlu khawatir tentang kecepatan sampai Anda menjalankan benchmark run).
<fileName awk '/WORD/ { print $2 }'
<fileName grep WORD | cut -f 2 -d ' '
Perintah-perintah ini hampir setara. Perbedaannya adalah:
- awk dan grep memiliki sintaks regexp yang berbeda . Awk dan
grep -E
memiliki sintaks regexp yang hampir sama (ekspresi reguler yang diperluas).
cut -d ' '
memperlakukan setiap karakter ruang individu sebagai pembatas. Pembatas default awk adalah setiap urutan spasi putih, yang dapat berupa beberapa spasi, tab, dll. Anda tidak dapat menggunakan urutan spasi putih acak sebagai pemisah dengan cut
. Untuk menggunakan ruang individu sebagai pemisah di awk, mengatur pemisah lapangan untuk regexp yang cocok satu ruang, selain regexp yang terdiri dari satu ruang (yang merupakan kasus khusus yang berarti “setiap spasi urutan”, yaitu default): awk -F '[ ]' '/WORD/ {print $2}'
.
¹ Aturan Pertama Optimalisasi Program: Jangan lakukan itu. Aturan Kedua tentang Pengoptimalan Program (hanya untuk para ahli!): Jangan lakukan itu dulu. - Michael A. Jackson
echo filename
ataucat filename
?