Verzeichnis 1. Einführung in den Grep-Befehl 2. Satzformat und allgemeine Optionen 3. Referenzfall 3.1 Suche nach Dateien, die mit „root“ in der Datei beginnen 3.2 Suche nach „root“, die in der Datei erscheint 3.3 Suche nicht nur nach Zeilen außer übereinstimmenden Zeilen 3.4 Passende Teile verwenden Farbanzeige 3.5 Nur die übereinstimmenden Stellen in der Datei ausgeben 3.6 Die Zeilen mit der übereinstimmenden Zeichenfolge ausgeben und die Anzahl der Zeilen anzeigen 3.7 Statistikdatei oder Textzusammenfassung der Anzahl der Zeilen mit der übereinstimmenden Zeichenfolge
1. Einführung in den grep-Befehl Der grep-Befehl im Linux-System ist ein leistungsstarkes Textsuchtool. Er kann reguläre Ausdrücke verwenden, um nach Text zu suchen und die passenden Zeilen zu kopieren.
Der vollständige Name von grep lautet GlobalRegularExpressionPrint und stellt die globale Version des regulären Ausdrucks dar. Seine Nutzungsberechtigungen gelten für alle Benutzer.
Chinesische Anmerkung:
grep['grep]Suchzielzeilenbefehl·global[?glo?bl]global, filamentous regelmäßige Schönheit[?r?ɡj?l?]reguläre, reguläre, reguläre Armee(n)ausdruck Schönheit[? k?spr?? ?n]Ausdruck, Ausdruck, Ausdruck, Hautfarbe, Mentalität
Beispiel: Es soll dich dazu bringen, dich nass zu machen, wenn du den Ausdruck verzeihst
Linux unterstützt drei Arten von grep-Befehlen: grep, egrep, grep-E
2. Satzformat und allgemeine Optionen Gemäß der Konvention überprüfen wir immer noch zuerst die Hilfe und verwenden 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)
Um es intuitiver zu machen, zeigen wir die häufig verwendeten Parameter in einer Tabelle an:
Parameterbeschreibung -i Groß- und Kleinschreibung ignorieren -E erweiterte reguläre POSTIX-Ausdrücke aktivieren -P reguläre Perl-Ausdrücke aktivieren -o nur den übereinstimmenden Inhalt des regulären Ausdrucks ausgeben -w ganze Wörter abgleichen -v negieren, also nicht übereinstimmend -n Ausgabe Nach der Zeile Zahl hat bestimmte Parameter, schauen wir uns den tatsächlichen Fall an:
3. Referenzfälle
3.1 Nach Dateien suchen, die mit „root“ beginnen Sie können ^root verwenden, um Dateien anzuzeigen, die mit „root“ in /etc/passwd beginnen. Der Vorgang ist wie folgt:
[root@mufenggrow ~]# grep ^root /etc/passwd root:x:0:0:root:/root:/bin/bash
3.2 Um nach einer bestimmten Phrase im Stammverzeichnis der Datei zu suchen, können wir direkt dem Wortnamen vor grep folgen:
Fall 1: Suchen Sie nach dem Root-Benutzer in /etc/passwd
[root@mufenggrow ~]# grep "root" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@mufenggrow ~]#
Fall 2: Stammverzeichnis aus mehreren Dateien durchsuchen
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 Suchen Sie nach anderen als übereinstimmenden Zeilen. Verwenden Sie hier den Parameter -v, z. B. Negation
Fall 1: Zählen Sie die Anzahl der Zeilen in einer Datei und schließen Sie keine Leerzeilen ein
Der Ausdruck einer Leerzeile: ^$
[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 ~]#
Manchmal ändern wir die Konfigurationsdatei und die Datei enthält viele #. Wenn wir das # entfernen möchten, um den Inhalt anzuzeigen, können wir
verwenden
[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 ~]#
这样显示,疗效不显著,我们看右图:
可
以看见,所有的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命令内容请搜索曾经的文章或继续浏览下边的相关文章希望你们之后多多支持!
Das obige ist der detaillierte Inhalt vonPraktische Fallanalyse und Referenzfallanalyse des grep-Befehls im Linux-System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!