9.Linux для Начинающих - Комманда grep и Регулярные Выражения
Isi kandungan:
- Syntax Command Grep
- Bagaimana cara menggunakan
grep
untuk Mencari String dalam Fail - Invert Match (Tidak Termasuk)
- Bagaimana untuk menggunakan Grep untuk Cari String dalam Output Perintah
- Carian Rekursif
- Tunjukkan Hanya Nama Fail
- Carian Insensitif Kes
- Cari Perkataan Penuh
- Tunjukkan Nombor Talian
- Count Matches
- Cari Struktur Pelbagai (Corak)
- Mod Tenang
- Ekspresi Biasa Biasa
- Ekspresi Biasa Dipanjangkan
- Cetak Talian Sebelum Perlawanan
- Cetak Talian Selepas Perlawanan
- Kesimpulannya
Perintah
grep
yang bermaksud "cetak ungkapan biasa global" adalah salah satu perintah yang paling berkuasa dan lazim digunakan di Linux.
Grep mencari satu atau lebih fail input untuk baris yang sepadan dengan corak yang diberikan dan menulis setiap baris yang hampir sama dengan output standard. Jika tiada fail ditentukan,
grep
dibaca dari input standard, yang biasanya merupakan output dari perintah lain.
Dalam tutorial ini, kami akan menunjukkan kepada anda cara menggunakan perintah
grep
melalui contoh-contoh praktikal, dan penjelasan terperinci mengenai pilihan
grep
GNU yang paling biasa.
Syntax Command Grep
Sebelum masuk ke cara menggunakan arahan
grep
, mari kita mulakan dengan mengkaji sintaks dasar.
Ungkapan utiliti
grep
mengambil bentuk berikut:
grep PATTERN
Barang dalam kurungan persegi adalah pilihan.
-
OPTIONS
- Nol atau lebih banyak pilihan. Grep menyediakan beberapa pilihan yang mengawal kelakuannya.PATTERN
- Corak carian.FILE
- Sifar atau lebih banyak nama fail input.
Untuk dapat mencari fail itu, pengguna yang menjalankan arahan mesti membaca akses ke fail tersebut.
Bagaimana cara menggunakan
grep
untuk Mencari String dalam Fail
Penggunaan yang paling asas bagi arahan
grep
adalah untuk mencari rentetan (teks) dalam fail.
Sebagai contoh, untuk memaparkan baris dari fail
/etc/passwd
mengandungi rentetan
bash
anda boleh menggunakan arahan berikut:
grep bash /etc/passwd
Keluaran seharusnya kelihatan seperti ini:
root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Sekiranya rentetan itu mengandungi ruang, anda perlu menyertakannya dalam tanda petikan tunggal atau berganda:
grep "Gnome Display Manager" /etc/passwd
Invert Match (Tidak Termasuk)
Untuk memaparkan garis yang tidak sepadan dengan corak, gunakan opsyen
-v
(atau
--invert-match
).
Sebagai contoh untuk memaparkan baris dari fail
/etc/passwd
yang tidak mengandungi string
nologin
anda boleh menggunakan perintah berikut:
grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash colord:x:124:124::/var/lib/colord:/bin/false git:x:994:994:git daemon user:/:/usr/bin/git-shell linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Bagaimana untuk menggunakan Grep untuk Cari String dalam Output Perintah
Daripada menentukan fail input, anda boleh paip output arahan lain untuk
grep
, dan kemudian memaparkan hanya baris sepadan dengan corak yang diberikan.
Contohnya, untuk mengetahui proses mana yang dijalankan pada sistem anda sebagai pengguna
www-data
anda boleh menggunakan perintah
ps
berikut:
ps -ef | grep www-data
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Anda juga boleh mengitar pelbagai paip dalam arahan. Seperti yang anda lihat dalam output di atas terdapat juga garis yang mengandungi proses
grep
. Jika anda tidak mahu garis yang ditunjukkan akan lulus output kepada contoh
grep
lain seperti ditunjukkan di bawah.
ps -ef | grep www-data | grep -v grep
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Carian Rekursif
Cari secara rawak menggunakan pola menggunakan, gunakan pilihan
-r
(atau -
--recursive
). Ini akan mencari semua fail dalam direktori yang ditentukan, melangkau symlinks yang ditemui secara rekursif. Untuk mengikuti semua pautan simbolik, gunakan pilihan
-R
(atau
--dereference-recursive
).
Dalam contoh berikut, kami mencari rentetan
linuxize.com
dalam semua fail di dalam direktori
/etc
:
grep -r linuxize.com /etc
Perintah ini akan mencetak garis-garis yang hampir sama dengan jalan penuh ke fail.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;
Jika sebaliknya
-r
anda menggunakan
-R
pilihan
grep
akan mengikuti semua pautan simbolik:
grep -R linuxize.com /etc
Perhatikan baris terakhir output. Garis itu tidak dicetak dalam contoh di atas kerana fail dalam direktori yang
sites-enabled
oleh Nginx adalah symlinks kepada fail konfigurasi di dalam direktori yang
sites-available
di
sites-available
web.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com; /etc/nginx/sites-enabled/linuxize.com: server_name linuxize.com www.linuxize.com;
Tunjukkan Hanya Nama Fail
Untuk menekan output
grep
lalai dan cetak hanya nama fail yang mengandungi corak yang sepadan, anda boleh menggunakan opsyen
-l
(atau -
--files-with-matches
).
Sebagai contoh untuk mencari semua fail yang berakhir dengan
.conf
dalam direktori kerja semasa dan cetak hanya nama fail yang mengandungi jenis string
linuxize.com
:
grep -l linuxize.com *.conf
Output akan kelihatan seperti ini:
tmux.conf haproxy.conf
Pilihan
-l
biasanya digunakan dalam kombinasi dengan pilihan rekursif
-R
:
Carian Insensitif Kes
Secara lalai, perintah
grep
adalah sensitif huruf. Ini bermakna bahawa aksara huruf besar dan huruf kecil dianggap berbeza.
Untuk mengabaikan kes apabila mencari, gunakan pilihan
-i
(atau
--ignore-case
).
Sebagai contoh, apabila mencari
Zebra
tanpa sebarang pilihan, arahan berikut tidak akan menunjukkan sebarang output iaitu terdapat padanan baris:
grep Zebra /usr/share/words
Tetapi jika anda melakukan carian yang tidak sensitif dengan menggunakan pilihan
-i
, ia akan sepadan dengan kedua-dua huruf besar dan huruf kecil:
grep -i Zebra /usr/share/words
Menentukan "Zebra" akan sepadan dengan "zebra", "ZEbrA" atau sebarang kombinasi huruf besar dan huruf kecil untuk rentetan itu.
Cari Perkataan Penuh
Apabila mencari "gnu",
grep
juga akan mencetak garis di mana "gnu" tertanam dalam kata yang lebih besar, seperti "cygnus" atau "magnum".
grep gnu /usr/share/words
cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut
Untuk kembali hanya baris-baris di mana rentetan yang ditentukan adalah keseluruhan perkataan (tertutup oleh aksara bukan kata), gunakan pilihan
-w
(atau -
--word-regexp
).
az
,
AZ
dan
0-9
) dan garis bawah (
_
). Semua aksara lain dianggap sebagai aksara bukan perkataan.
grep -w gnu /usr/share/words
Tunjukkan Nombor Talian
Untuk menunjukkan bilangan garisan yang mengandungi rentetan yang sepadan dengan corak, gunakan pilihan
-n
(atau -
--line-number
). Apabila menggunakan pilihan ini,
grep
akan mencetak padanan untuk keluaran standard yang diawali dengan nombor baris yang ditemui pada.
Sebagai contoh untuk memaparkan baris dari fail
/etc/services
mengandungi rentetan
bash
diawali dengan nombor baris yang sesuai, anda boleh menggunakan perintah berikut:
grep -n 10000 /etc/services
Keluaran di bawah menunjukkan kepada kami bahawa perlawanan ditemui pada garisan 10423 dan 10424.
10423:ndmp 10000/tcp 10424:ndmp 10000/udp
Count Matches
Untuk mencetak kiraan baris sepadan dengan output standard, gunakan pilihan
-c
(atau
--count
).
Dalam contoh di bawah, kami mengira bilangan akaun yang mempunyai
/usr/bin/zsh
sebagai shell.
grep -c '/usr/bin/zsh' /etc/passwd
Cari Struktur Pelbagai (Corak)
Dua atau lebih corak carian boleh disambungkan menggunakan operator ATAU
|
.
Secara lalai,
grep
menafsirkan corak sebagai ungkapan biasa asas di mana aksara meta seperti
|
kehilangan makna khas mereka, dan versi backslashed mereka mesti digunakan.
Dalam contoh di bawah ini kita sedang mencari semua kejadian perkataan yang
fatal
,
error
, dan
critical
dalam fail ralat log Nginx:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Mod Tenang
The
-q
(atau
--quiet
) memberitahu
grep
untuk tidak menulis apa-apa ke terminal (output standard). Jika perlawanan ditemui, arahan akan keluar dengan status
0
. Ini berguna apabila menggunakan skrip shell
grep
di mana anda ingin menyemak sama ada fail mengandungi rentetan dan melakukan tindakan tertentu bergantung kepada hasilnya.
Berikut adalah contoh menggunakan
grep
dalam mod senyap sebagai arahan ujian dalam pernyataan
if
:
if grep -q PATTERN filename then echo pattern found else echo pattern not found fi
Ekspresi Biasa Biasa
GNU Grep mempunyai dua set ciri biasa, Basic dan Extended. Secara lalai,
grep
menafsirkan corak sebagai ungkapan biasa asas.
Apabila digunakan dalam mod ungkapan biasa asas, semua aksara lain kecuali aksara meta, sebenarnya merupakan ungkapan biasa yang sesuai dengan dirinya sendiri. Di bawah ini adalah senarai aksara meta yang paling biasa digunakan:
-
Gunakan simbol
^
(karet) untuk memadankan ekspresi pada permulaan garisan. Dalam contoh berikut, rentetan^kangaroo
akan dipadankan hanya jika ia berlaku pada awal permulaan garis.grep "^kangaroo" file.txt
Gunakan simbol
$
(dollar) untuk mencocokkan ungkapan pada akhir baris. Dalam contoh berikut, rentetankangaroo$
akan dipadankan hanya jika ia berlaku pada hampir satu baris.grep "kangaroo$" file.txt
Gunakan
.
simbol (tempoh) untuk memadankan mana-mana aksara tunggal. Sebagai contoh, untuk memadankan apa-apa yang bermula dengankan
maka mempunyai dua aksara dan berakhir dengan taliroo
, anda boleh menggunakan pola berikut:grep "kan..roo" file.txt
Guna
accept
atau "accent
, anda boleh menggunakan corak berikut:grep "accet" file.txt
Guna
co(any_letter_except_l)a
, seperticoca
,cobalt
dan sebagainya, tetapi tidak sepadan dengan baris yang mengandungicola
,grep "coa" file.txt
Untuk melarikan diri dari makna khas watak seterusnya, gunakan simbol
\
(backslash).
Ekspresi Biasa Dipanjangkan
Untuk mentafsir corak sebagai ungkapan tetap lanjutan, gunakan pilihan
-E
(atau -
--extended-regexp
). Ekspresi biasa diperluas merangkumi semua aksara meta asas, bersama-sama dengan aksara meta tambahan untuk mencipta corak carian yang lebih rumit dan kuat. Berikut adalah beberapa contoh:
-
Padankan dan ekstrak semua alamat e-mel daripada fail yang diberikan:
grep -E -o "\b+@+\.{2, 6}\b" file.txt
Padankan dan ekstrak semua alamat IP yang sah dari fail yang diberikan:
grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt
Pilihan
-o
digunakan untuk mencetak hanya rentetan padanan.
Cetak Talian Sebelum Perlawanan
Untuk mencetak bilangan baris tertentu sebelum memadankan baris, gunakan pilihan
-B
(atau -
--before-context
).
Sebagai contoh, untuk memaparkan lima baris konteks utama sebelum baris yang hampir sama, anda akan menggunakan arahan berikut:
Cetak Talian Selepas Perlawanan
Untuk mencetak nombor tertentu garisan selepas baris padanan, gunakan pilihan
-A
(atau
--after-context
).
Sebagai contoh untuk memaparkan lima baris konteks trailing selepas baris yang sepadan, anda akan menggunakan arahan berikut:
Kesimpulannya
Perintah
grep
membolehkan anda mencari pola di dalam fail. Jika perlawanan jika dijumpai, grep akan mencetak garisan yang mengandungi pola yang ditentukan.
Terdapat banyak lagi untuk mengetahui tentang Grep di halaman Manual Pengguna Grep.
terminal grepCari Maklumat dalam Fail Teks Indeks Fail Cari Perkataan Lite

Kata Carian Indeks Kata Lite adalah seperti Google anda sendiri ... untuk bagaimanapun banyak teks teks adalah pada cakera keras anda.
E-mel Mudah: Extract alamat e-mel dari Fail, Teks, Folder, URL, dan ekstrak ID e-mel dari pelbagai sumber seperti Fail Teks, Folder, URL, String, dll

Mungkin ada saat-saat apabila anda perlu mengekstrak sekumpulan alamat e-mel dari fail teks, folder atau pautan web. Sebaliknya ia akan melakukan secara manual, yang saya pasti akan menjadi pekerjaan yang agak menyakitkan, anda boleh cuba menggunakan perisian ini
Cari dan Ganti Teks dalam Pelbagai Fail dalam Pukal pada Windows

Cari dan Ganti Alat akan membantu anda mencari dan menggantikan teks dalam berbilang fail secara pukal. Hanya masukkan teks dan tekan Ganti untuk menggantikan teks dengan serta-merta.