Linux中 grep/egrep的命令收集

语法: grep  [-cinvABC]  'word'  filenameide

-c :打印符合要求的行数spa

-i :忽略大小写crontab

-n :在输出符合要求的行的同时连同行号一块儿输出ci

-v :打印不符合要求的行字符串

-A :后跟一个数字(有无空格均可以),例如 –A2则表示打印符合要求的行以及下面两行it

-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行class

-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行test


例题:file

包含 ‘halt’ 的行以及这行下面的两行都打印出:语法

grep -A2 'halt' /etc/passwd

包含 ‘halt’ 的行以及这行上面的两行都打印出:

grep -B2 'halt' /etc/passwd

包含 ‘halt’ 的行以及这行上面和下面的各两行都打印出:

grep -C2 'halt' /etc/passwd

过滤出带有某个关键词的行并输出行号:

grep -n 'root' /etc/passwd

过滤不带有某个关键词的行,并输出行号:

grep -nv 'nologin' /etc/passwd

过滤出全部包含数字的行:

grep '[0-9]' /etc/inittab

过滤出全部不包含数字的行:

grep -v '[0-9]' /etc/inittab

把全部以 ‘#’ 开头的行去除:

grep -v '^#' /etc/inittab

去除全部空行和以 ‘#’ 开头的行:

grep -v '^#' /etc/crontab |grep -v '^$'

如何打印出不以英文字母开头的行

grep '^[^a-zA-Z]' test.txt
grep '[^a-zA-Z]' test.txt

过滤任意一个字符与重复字符:

grep 'r..o' /etc/passwd                      . 表示任意一个字符
grep 'ooo*' /etc/passwd                      * 表示零个或多个前面的字符
grep '.*' /etc/passwd |wc -l                ‘.*’ 表示零个或多个任意字符,空行也包含在内

指定要过滤字符出现的次数:

grep 'o\{2\}' /etc/passwd


筛选一个或一个以上前面的字符:

egrep 'o+' test.txt

筛选零个或一个前面的字符:

egrep 'o?' test.txt

筛选字符串1或者字符串2:

egrep 'aaa|111|ooo' test.txt

egrep中( )的应用:

egrep 'r(oo)|(at)o' test.txt                用( )表示一个总体,例如(oo)+就表示1个 ‘oo’                                                               或者多个 ‘oo’
相关文章
相关标签/搜索