有必要好好学习总结下grep 命令的用法了
参考鸟哥的linux私房菜 中关于grep命令的讲解进行总结。
使用方法: grep [-acivn] [--color=auto] ‘想要搜索的字符’ filename
参数:
-a: 以text文件搜索数据
-c: 计算字符串出现的次数
-i: 忽略大小写搜索
-n: 输出字符串及对应的行号
-v: 取反操作
--color=auto :可以为字符串设定颜色。默认为auto
例子:
last | grep 'root'
last 当中,有出现 root 的那一行就取出来;
last | grep -v 'root'
只要没有 root 的就取出!
last | grep 'root' |cut -d ' ' -f1
只要有 root 就取出,并且仅取第一栏的信息
dmesg | grep -n 'qxl'
grep -vn 'the' regular_express.txt
取反 并输出行号
grep -n 't[ae]st' regular_express.txt
查找‘tast’或‘test’字符串
grep -n '[^g]oo' regular_express.txt
查找‘oo’ 且前面不是‘g’的字符
grep -n '[^a-z]oo' regular_express.txt
查找'oo'且前面字符不为小写字母的字符串
grep -n '[^[:lower:]]oo' regular_express.txt
与上面等价 [:lower:] 代表a-z 所以 [[:lower:]] 就代表 [a-z]
grep -n '[0-9]' regular_express.txt
查找数字 字符串
grep -n '[[:digit:]]' regular_express.txt
与上面等价 [:digit:] 代表 0-9 所以[[:digit:]] 代表 [0-9]
grep -v '^$' /etc/rsyslog.conf | grep -v '^#'
# 结果仅有 14 行,其中第一个“ -v '^$' ”代表“不要空白行”,
# 第二个“ -v '^#' ”代表“不要开头是 # 的那行”喔!
. (小数点):代表“一定有一个任意字符”的意思;
* (星星号):代表“重复前一个字符, 0 到无穷多次”的意思,为组合形态