《快學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:全球大搜羅 |