GNU/Linux >> Belajar Linux >  >> Linux

Apa perbedaan antara grep, awk &sed?

Saya hanya ingin menyebutkan satu hal, ada banyak alat yang dapat melakukan pemrosesan teks, misalnya sortir, potong, pisahkan, gabung, tempel, comm, uniq, kolom, rev, tac, tr, nl, pr, head, tail... ..

mereka sangat berguna tetapi Anda harus mempelajari opsi mereka, dll.

Cara malas (bukan cara terbaik) untuk mempelajari pemrosesan teks mungkin:hanya belajar grep , sed dan awk. dengan tiga alat ini, Anda dapat menyelesaikan hampir 99% masalah pemrosesan teks dan tidak perlu mengingat berbagai cmd dan opsi di atas. :)

DAN, jika Anda sudah mempelajari dan menggunakan ketiganya, Anda tahu bedanya. Sebenarnya, perbedaannya di sini adalah alat mana yang bagus untuk menyelesaikan masalah seperti apa.

cara yang lebih malas mungkin mempelajari bahasa skrip (python, perl atau ruby) dan melakukan setiap pemrosesan teks dengannya.


Definisi singkat:

grep :mencari istilah tertentu dalam file

#usage
$ grep This file.txt
Every line containing "This"
Every line containing "This"
Every line containing "This"
Every line containing "This"

$ cat file.txt
Every line containing "This"
Every line containing "This"
Every line containing "That"
Every line containing "This"
Every line containing "This"

Sekarang awk dan sed sangat berbeda dari grep .awk dan sed adalah pengolah teks. Mereka tidak hanya memiliki kemampuan untuk menemukan apa yang Anda cari dalam teks, mereka juga memiliki kemampuan untuk menghapus, menambahkan, dan memodifikasi teks (dan masih banyak lagi).

awk sebagian besar digunakan untuk ekstraksi data dan pelaporan. sed adalah editor aliran
Masing-masing dari mereka memiliki fungsi dan spesialisasi sendiri.

Contoh
Sed

$ sed -i 's/cat/dog/' file.txt
# this will replace any occurrence of the characters 'cat' by 'dog'

Aduh

$ awk '{print $2}' file.txt
# this will print the second column of file.txt

awk dasar penggunaan:
Hitung jumlah/rata-rata/maks/mnt/dll. apa pun yang mungkin Anda butuhkan.

$ cat file.txt
A 10
B 20
C 60
$ awk 'BEGIN {sum=0; count=0; OFS="\t"} {sum+=$2; count++} END {print "Average:", sum/count}' file.txt
Average:    30

Saya sarankan Anda membaca buku ini:Sed &Awk:2nd Ed.

Ini akan membantu Anda menjadi pengguna sed/awk yang mahir di lingkungan mirip unix apa pun.


Grep berguna jika Anda ingin dengan cepat mencari baris yang cocok dalam sebuah file. Itu juga dapat mengembalikan beberapa informasi sederhana lainnya seperti nomor baris yang cocok, jumlah yang cocok, dan daftar nama file.

Awk adalah seluruh bahasa pemrograman yang dibuat untuk membaca file bergaya CSV, memproses catatan, dan secara opsional mencetak kumpulan data hasil. Itu dapat melakukan banyak hal tetapi itu bukan alat termudah untuk digunakan untuk tugas-tugas sederhana.

Sed berguna saat Anda ingin membuat perubahan pada file berdasarkan ekspresi reguler. Ini memungkinkan Anda untuk dengan mudah mencocokkan bagian garis, membuat modifikasi, dan mencetak hasil. Ini kurang ekspresif daripada awk tapi itu membuatnya lebih mudah digunakan untuk tugas-tugas sederhana. Ini memiliki banyak operator yang lebih rumit yang dapat Anda gunakan (menurut saya bahkan sudah selesai), tetapi secara umum Anda tidak akan menggunakan fitur tersebut.


Linux
  1. MySQL vs. MariaDB:Apa Perbedaan Utama Antara Mereka?

  2. Apa yang Membuat Grep Mempertimbangkan File Menjadi Biner?

  3. Apa Perbedaan Mendasar Antara Kerang *nix Mainstream??

  1. Apa Penggunaan Sah dari Perintah `sentuh`?

  2. Apa perbedaan antara `chattr +i FILE` dan` chmod -w FILE`?

  3. Apa perbedaan antara lsof dan netstat di linux?

  1. Debian vs Ubuntu:Apa perbedaannya?

  2. 7zip, Xz, Gzip, Tar, Dll — Apa Perbedaannya??

  3. Apa perbedaan antara rdesktop dan xfreerdp?