當前位置:
首頁 > 最新 > 《快學BigData》-Linux grep 命令詳解

《快學BigData》-Linux grep 命令詳解

Linux grep命令詳解1-1)、使用幫助

$ grep --help

正則表達式選擇與解釋:

-E, --extended-regexpPATTERN是一個可擴展的正則表達式(縮寫為ERE)

-F, --fixed-stringsPATTERN是一組由斷行符分隔的字元串。

-G, --basic-regexpPATTERN是一個基本正則表達式(縮寫為BRE)

-P, --perl-regexpPATTERN是一個Perl正則表達式

-e, --regexp=PATTERN用PATTERN來進行匹配操作

-f, --file=FILE從FILE中取得PATTERN

-i, --ignore-case忽略大小寫

-w, --word-regexp強制PATTERN僅完全匹配字詞

-x, --line-regexp強制PATTERN僅完全匹配一行

-z, --null-data一個位元組的數據行,但不是空行

雜項:

-s, --no-messages不顯示錯誤信息

-v, --invert-match選中不匹配的行

-V, --version顯示版本信息並退出

--help顯示此幫助並退出

輸出控制:

-m, --max-count=NUMNUM次匹配後停止

-b, --byte-offset輸出的同時列印位元組偏移

-n, --line-number輸出的同時列印行號

--line-buffered每行輸出清空

-H, --with-filename為每一匹配項列印文件名

-h, --no-filename輸出時不顯示文件名前綴

--label=LABEL將LABEL作為標準輸入文件名前綴

-o, --only-matching只顯示匹配PATTERN部分的行

-q, --quiet, --silent不顯示所有常規輸出

--binary-files=TYPE設定二進位文件的TYPE類型;

TYPE可以是`binary", `text",或`without-match"

-a, --text等同於--binary-files=text

-I等同於--binary-files=without-match

-d, --directories=ACTION讀取目錄的方式;

ACTION可以是`read", `recurse",或`skip"

-D, --devices=ACTION讀取設備、先入先出隊列、套接字的方式;

ACTION可以是`read"或`skip"

-r, --recursive等同於--directories=recurse

-R, --dereference-recursive同上,但遍歷所有符號鏈接

--include=FILE_PATTERN只查找匹配FILE_PATTERN的文件

--exclude=FILE_PATTERN跳過匹配FILE_PATTERN的文件和目錄

--exclude-from=FILE跳過所有除FILE以外的文件

--exclude-dir=PATTERN跳過所有匹配PATTERN的目錄。

-L, --files-without-match只列印不匹配FILEs的文件名

-l, --files-with-matches只列印匹配FILES的文件名

-c, --count只列印每個FILE中的匹配行數目

-T, --initial-tab行首tabs分隔(如有必要)

-Z, --null在FILE文件最後列印空字元

文件控制:

-B, --before-context=NUM列印文本及其前面NUM行

-A, --after-context=NUM列印文本及其後面NUM行

-C, --context=NUM列印NUM行輸出文本

-NUM等同於--context=NUM

--color[=WHEN],

--colour[=WHEN]使用標記高亮匹配字串;

WHEN可以是`always", `never"或`auto"

-U, --binary不要清除行尾的CR字元(MSDOS/Windows)

-u, --unix-byte-offsets忽略CR字元,報告位元組偏移

(MSDOS/Windows)

1-2)、使用實例A)、查找含有root關鍵字的信息

區分大小寫

$ grep "root" passwd

root:x:0:0:root:/root:/bin/bash

nm-openvpn:x:117:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/bin/false

不區分大小寫

$ grep -i "root" passwd

root:x:0:0:root:/root:/bin/bash

nm-openvpn:x:117:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/bin/false

ROOT:x:0:0:ROOT:/ROOT:/bin/bash

B)、過濾二進位

$ grep -a -i "root" passwd

root:x:0:0:root:/root:/bin/bash

nm-openvpn:x:117:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/bin/false

ROOT:x:0:0:ROOT:/ROOT:/bin/bash

-a: 是過濾二進位的

C)、按照多個條件查找

$ grep -a -i -E "rootbash" passwd

root:x:0:0:root:/root:/bin/bash

nm-openvpn:x:117:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/bin/false

xiaoxu:x:1000:1000:xiaoxu,,,:/home/xiaoxu:/bin/bash

ROOT:x:0:0:ROOT:/ROOT:/bin/bash

-E:可以過濾多個條件,中間以分割

D)、顯示匹配的行數

$ grep -a -i -E -c "rootbash" passwd

4

$ grep -a -i -E "rootbash" passwd wc -l

4

E)、顯示匹配的行數

$ grep -a -i -E -n "rootbash" passwd

1:root:x:0:0:root:/root:/bin/bash

36:nm-openvpn:x:117:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/bin/false

42:xiaoxu:x:1000:1000:xiaoxu,,,:/home/xiaoxu:/bin/bash

45:ROOT:x:0:0:ROOT:/ROOT:/bin/bash

F)、遞歸查詢文件夾下的所有的文件的匹配信息

$ grep "root" -r -n nmon/

nmon/:8:AAA,user,root

nmon/71:BBBP,035,fdisk-l,"Disk /dev/mapper/ubuntu--vg-root: 457.8 GiB, 491509514240 bytes, 959979520 sectors"

nmon/:723:BBBP,687,/dev/mapper,"crw------- 1 root root 10, 236 8月14 22:46 control"

G)、顯示匹配當前行數的前幾行或後幾行

顯示當前匹配的後三行

$ seq 10 grep "5" -A 3

5

6

7

8

顯示當前匹配的前三行

$ seq 10 grep "5" -B 3

2

3

4

5

顯示當前匹配的前後三行

$ seq 10 grep "5" -C 3


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

這世道不僅僅是小白鞋的天下,也是其他顏色的運動鞋的天下

TAG:全球大搜羅 |