GNU/Linux >> Belajar Linux >  >> Linux

Mencari banyak pola (kata) dengan ack?

Untuk ag , pada versi 0.19.2 standarnya adalah mencari di direktori dan file secara rekursif.

Untuk mencari beberapa pola, Anda dapat menggunakan sintaks serupa sebagai ack

ag 'pattern1|pattern2'

akan mencari pattern1 keduanya dan pattern2 .

Jika Anda tidak ingin mencari secara rekursif, Anda dapat menyetel kedalaman pencarian ke 1 dengan beralih --depth NUM

Oleh karena itu,

ag 'pattern1|pattern2' --depth 1

hanya akan mencari di direktori saat ini untuk kedua pola.


Ini seharusnya cukup:

ack -R 'string1|string2'

Sebagai -R adalah default, Anda dapat menghilangkannya:

ack 'string1|string2'

Dari man ack :

-r , -R , --recurse

Recurse ke sub-direktori. Ini adalah default dan hanya di sini untuk kompatibilitas dengan grep. Anda juga dapat menggunakannya untuk mengaktifkan --no-recurseoff.

Jika Anda ingin mendapatkan pola dari sebuah file, katakanlah /path/to/patterns.file, Anda dapat menggunakan:

ack "$(cat /path/to/patterns.file)"

atau sama dengan:

ack "$(< /path/to/patterns.file)"

Saya tidak dapat menemukan padanan yang tepat untuk grep -f .


Perintah ack juga dapat merangkai bersama dengan pipa. Misalnya ack pertama menemukan file yang berisi pattern1 kemudian kirimkan itu ke ack lain untuk mencari pattern2 file-file itu saja

ack -l 'pattern1' | ack -x 'pattern2'

-l parameter berarti hanya mencantumkan file yang cocok (bukan teks yang cocok). -x parameter berarti mencari hanya file yang disalurkan ke sana. Ini mirip dengan mempersempit file untuk pencarian ack berikutnya.

ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'

Ini adalah DAN operator dan bukan operator ATAU yang diberikan dalam solusi lain.


Linux
  1. Bagaimana Menjalankan Grep Dengan Banyak Dan Pola?

  2. Cari Di Dalam Bucket S3 Dengan Log?

  3. Cari File Dengan Gui?

  1. Cara Mengelola Beberapa Versi Python Dengan Pyenv Di Linux

  2. Menyortir banyak kunci dengan pengurutan Unix

  3. Penanganan sinyal dengan banyak utas di Linux

  1. Kelola beberapa instance layanan dengan systemctl

  2. Kirim perintah ke beberapa sesi SSH dengan Terminator

  3. Menggunakan beberapa pola sekaligus dengan perintah Sed