Rumah  >  Artikel  >  Tutorial sistem  >  Analisis kes praktikal dan analisis kes rujukan arahan grep dalam sistem Linux

Analisis kes praktikal dan analisis kes rujukan arahan grep dalam sistem Linux

WBOY
WBOYasal
2024-06-02 19:04:13589semak imbas

Direktori 1. Pengenalan arahan Grep 2. Format ayat dan pilihan biasa 3. Kes rujukan 3.1 Cari fail bermula dengan akar dalam fail 3.2 Cari akar yang muncul dalam fail 3.3 Cari bukan sahaja baris selain daripada baris yang sepadan 3.4 Bahagian yang sepadan Gunakan paparan warna 3.5 Keluarkan hanya tempat yang dipadankan dalam fail 3.6 Keluarkan baris yang mengandungi rentetan yang sepadan dan paparkan bilangan baris 3.7 Fail statistik atau ringkasan teks bilangan baris yang mengandungi rentetan yang sepadan

1. Pengenalan kepada perintah grep Perintah grep dalam sistem Linux ialah alat carian teks yang berkuasa Ia boleh menggunakan ungkapan biasa untuk mencari teks dan menyalin baris yang sepadan.

Nama penuh grep ialah GlobalRegularExpressionPrint, yang mewakili versi ekspresi biasa global Keizinan penggunaannya adalah untuk semua pengguna.

Anotasi bahasa Cina:

grep['grep]Arahan baris sasaran carian·global[?glo?bl]global, kecantikan biasa berfilamen[?r?ɡj?l?]kecantikan ekspresi tentera(n)biasa, biasa, k?spr?? ?n]ekspresi, ekspresi, ekspresi, wajah, mentaliti

Contoh: Ia sepatutnya menjaga diri anda sendiri, jika anda akan memaafkan ungkapan tersebut

Linux menyokong tiga cara arahan grep: grep, egrep, grep-E

2 Format ayat dan pilihan biasa Menurut konvensyen, kami masih menyemak bantuan dahulu dan menggunakan grep --help

[root@mufeng test]# grep --help
用法: grep [选项]... PATTERN [FILE]...
在每个 FILE 或是标准输入中查找 PATTERN。
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: grep -i 'hello world' menu.h main.c
正则表达式选择与解释:
-E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
-F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
-G, --basic-regexpPATTERN 是一个基本正则表达式(缩写为 BRE)
-P, --perl-regexp PATTERN 是一个 Perl 正则表达式
-e, --regexp=PATTERN用 PATTERN 来进行匹配操作
-f, --file=FILE 从 FILE 中取得 PATTERN
-i, --ignore-case 忽略大小写
-w, --word-regexp 强制 PATTERN 仅完全匹配字词
-x, --line-regexp 强制 PATTERN 仅完全匹配一行
-z, --null-data 一个 0 字节的数据行,但不是空行
Miscellaneous:
-s, --no-messages suppress error messages
-v, --invert-matchselect non-matching lines
-V, --version display version information and exit
--helpdisplay this help text and exit
输出控制:
-m, --max-count=NUM NUM 次匹配后停止
-b, --byte-offset 输出的同时打印字节偏移
-n, --line-number 输出的同时打印行号
--line-buffered 每行输出清空
-H, --with-filename 为每一匹配项打印文件名
-h, --no-filename 输出时不显示文件名前缀
--label=LABEL 将LABEL 作为标准输入文件名前缀
-o, --only-matching show only the part of a line matching PATTERN
-q, --quiet, --silent suppress all normal output
--binary-files=TYPE assume that binary files are TYPE;
TYPE is 'binary', 'text', or 'without-match'
-a, --textequivalent to --binary-files=text
-Iequivalent to --binary-files=without-match
-d, --directories=ACTIONhow to handle directories;
ACTION is 'read', 'recurse', or 'skip'
-D, --devices=ACTIONhow to handle devices, FIFOs and sockets;
ACTION is 'read' or 'skip'
-r, --recursive like --directories=recurse
-R, --dereference-recursive
likewise, but follow all symlinks
--include=FILE_PATTERN
search only files that match FILE_PATTERN
--exclude=FILE_PATTERN
skip files and directories matching FILE_PATTERN
--exclude-from=FILE skip files matching any file pattern from FILE
--exclude-dir=PATTERN directories that match PATTERN will be skipped.
-L, --files-without-match print only names of FILEs containing no match
-l, --files-with-matchesprint only names of FILEs containing matches
-c, --count print only a count of matching lines per FILE
-T, --initial-tab make tabs line up (if needed)
-Z, --nullprint 0 byte after FILE name
文件控制:
-B, --before-context=NUM打印以文本起始的NUM 行
-A, --after-context=NUM 打印以文本结尾的NUM 行
-C, --context=NUM 打印输出文本NUM 行
-NUMsame as --context=NUM
--group-separator=SEP use SEP as a group separator
--no-group-separatoruse empty string as a group separator
--color[=WHEN],
--colour[=WHEN] use markers to highlight the matching strings;
WHEN is 'always', 'never', or 'auto'
-U, --binarydo not strip CR characters at EOL (MSDOS/Windows)
-u, --unix-byte-offsets report offsets as if CRs were not there
(MSDOS/Windows)

Untuk menjadi lebih intuitif, kami memaparkan parameter yang biasa digunakan dalam jadual:

Penerangan parameter -saya abaikan huruf besar -E dayakan POSTIX ungkapan biasa lanjutan -P dayakan ungkapan biasa perl -o hanya keluarkan kandungan yang sepadan bagi ungkapan biasa -w padankan seluruh perkataan -v menafikan, iaitu tidak sepadan -n keluaran Selepas baris nombor mempunyai parameter tertentu, mari kita lihat kes sebenar:

3. Kes rujukan

3.1 Cari fail bermula dengan root Anda boleh menggunakan ^root untuk melihat fail bermula dengan root dalam /etc/passwd

[root@mufenggrow ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash

3.2 Untuk mencari frasa tertentu dalam akar yang muncul dalam fail, kita boleh terus mengikut nama perkataan di hadapan grep:

Kes 1: Cari pengguna root dalam /etc/passwd

linux cat grep 匹配_grep正则表达式匹配数字_catgrep

[root@mufenggrow ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow ~]# 

Kes 2: Cari akar daripada berbilang fail

root@mufenggrow ~]# echo root >> a.txt
[root@mufenggrow ~]# echo root >> b.txt
[root@mufenggrow ~]# grep "root" /etc/passwda.txt b.txt
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
a.txt:root
b.txt:root
[root@mufenggrow ~]# 

3.3 Cari baris selain daripada baris yang sepadan Gunakan parameter -v di sini, seperti penolakan

Kes 1: Kira bilangan baris dalam fail dan jangan masukkan baris kosong

Ungkapan baris kosong: ^$

[root@mufenggrow ~]# cp /etc/passwd ./
## 源文件一共35行
[root@mufenggrow ~]# cat /etc/passwd |wc -l
35
## 追加空行进去
[root@mufenggrow ~]# echo "" >> /etc/passwd
[root@mufenggrow ~]# cat /etc/passwd |wc -l
36
## 去掉空行测试
[root@mufenggrow ~]# grep -v ^$/etc/passwd |wc -l
35
[root@mufenggrow ~]# 

linux cat grep 匹配_grep正则表达式匹配数字_catgrep

Kadang-kadang kami menukar fail konfigurasi dan fail mengandungi banyak # Jika kami ingin membuang # untuk melihat kandungan, kami boleh menggunakan

[root@mufenggrow ~]# grep -v ^# passwd |wc -l
35

3.4匹配的部份使用颜色显示这儿可以使用--color=auto,我们来查看一下包含root的行linux cat grep 匹配linux cat grep 匹配,并高亮显示要查找的root。

[root@mufenggrow ~]# grep root /etc/passwd--color=auto
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow ~]# 

这样显示,疗效不显著,我们看右图:

catgrep_grep正则表达式匹配数字_linux cat grep 匹配

catgrep_linux cat grep 匹配_grep正则表达式匹配数字

以看见,所有的root都是蓝色表示的。

3.5只输出文件中匹配到的地方例如我们要查询root,但我不想显示包含root的行RAR FOR LINUX,而是只显示要查询的内容:

此时须要使用-o参数,代码如下

[root@mufenggrow ~]# grep -o root /etc/passwd
root
root
root
root

要注意,假若一行中有10个root,这儿就显示10个,而不是只显示一个,所以3.4的案例中我们查询的时侯红帽子linux下载,包含root的有两行,但有4个root,在3.5案例中,显示了所有的root。

3.6输出包含匹配字符串的行,并显示所在的行数此处可以使用-n参数,-n会在一行的后面加上行号:例如“4:”

我们来看下代码示例:

[root@mufenggrow ~]# grep -n "root" passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

我们要统计一个文件一共有多少行,也可以使用-n参数

root@mufenggrow ~]# grep -n "" passwd |awk -F : '{print $1}' |tail -n 1
35

3.7统计文件或则文本中包含匹配字符串的行数此时可以用-c参数:

[root@mufenggrow ~]# grep -c "root" passwd
2

包含root的有两行,假如我们要统计文本的行数:

[root@mufenggrow ~]# grep -c "$" passwd
35

相当于查找$的行数,可以见到一共有35个$符号,也就是35行。

总结grep命令在日常工作中,应用的比较广泛,一定要认真学习,记熟记牢常用参数。

到此这篇关于linux中grep命令使用实战解读的文章就介绍到这了,更多相关linuxgrep命令内容请搜索曾经的文章或继续浏览下边的相关文章希望你们之后多多支持!

Atas ialah kandungan terperinci Analisis kes praktikal dan analisis kes rujukan arahan grep dalam sistem Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn