建议对文中命令进行亲自尝试与检验.
1. 多个关键字查找
1.1 关键字间or操作(-e选项; 元字符|; -f file)
以下内容为程序代码:
grep -l -e 'string.h' -e 'stdlib.h' /usr/include/*.h grep 'strint.h|stdlib.h' /usr/include/*.h grep -E 'string.h|stdlig.h' /usr/include/*.h #使用-E 看着舒服 grep -l -f multi_pattern.txt /usr/include/*.h
NOTE: -e 选项还可以避免 关键字是-开头的导致选项解读失败.
1.2 关键字间and操作(通过管道|; 通过正则)
以下内容为程序代码:
echo hello world | grep '' | grep ' '#同时包含'hello','world'的行 grep -E 'pattern1.*pattern2|pattern2.*pattern1'#2个关键字还好,要是n个关键字!
2. 匹配单词(-w gnu选项; <>)
以下内容为程序代码:
grep -w 'main' /usr/include/*.h#这个-w很方便 grep '' /usr/include/*.h
3.善用-E(启用 extended expression,正则写起来更加灵活,省去很多的,正则功能更强大)
man gcc | grep -E '(| | | ) 1'#查看gcc帮助文件里两个the/that/and/or连在一起的行 man gcc | grep -E -w '(the|that|and|or) 1' man gcc | grep -E -w '([a-zA-Z] ) 1'#查看gcc帮助文件里含两个连续单词的行
4. 忽略大小写 -i
grep -i 'int_max' /usr/include/limits.h #查看INT_MAX的值 echo 'it IT' | grep -i -w -E '([a-z] ) 1' #连个单词相同,忽略大小写 echo 'it IT' | grep -E -w '([a-zA-Z] ) 1' #两个单词不同
5. 递归查找 -r(posix 未说明)
以下内容为程序代码:
grep -i -w -r -E 'error|failed|failure' /var/log |less #查看日志的错误信息
6. 取反-v
以下内容为程序代码:
grep -v -w 'hello' filename #如果没有取反,世界将不再美丽
7. 匹配数 -c
以下内容为程序代码:
echo aaaa | grep -c 'a' #这个输出是1!grep是行匹配的
8. 输出文件名 -l
以下内容为程序代码:
grep -l -r -i -w 'key_word' /usr/include/*.h #查找包含key_word的头文件
9. 只输出匹配部分-o (gnu 选项, 常用与检测正则表达式)
以下内容为程序代码:
echo abcddf |grep -o 'dd'
10. 如果是纯字符串搜索,-F 速度更快.(惟吾无为 12楼补充)
做个实验:
man gcc | tr -cs '[:alpha:]' 'n' >grep.date #用gcc manual生成个纯字符串文件作为搜索关键字 wc -l grep.date 97288 #这么多! time `man gcc | grep -F -f grep.date > /dev/null` #比较不带-F,与带-F real 0m0.499s #仔细看看时间的对比! user 0m0.741s sys 0m0.056s time `man gcc | grep -f grep.date > /dev/null` real 4m9.630s #仔细看看时间的对比! user 4m7.602s sys 0m0.713s
NOTE: 当纯字符串匹配,尤其是要匹配的字符串非常多,-F不可不用.
11. 在查找进程的时候,利用[]实现同时grep -v grep的功能
[Bob]@[Fck_without_U]:[~]-> ps -ef | grep "java -jar" tdlteman 22023 22006 0 Oct07 ? 00:09:58 java -jar slave.jar xiabao 31501 30737 0 11:08 pts/8 00:00:00 grep java -jar ###grep 自身也出来了 [Bob]@[Fck_without_U]:[~]-> ps -ef | grep "java -jar" | grep -v grep #-v 去掉grep进程结果 tdlteman 22023 22006 0 Oct07 ? 00:09:58 java -jar slave.jar [Bob]@[Fck_without_U]:[~]-> ps -ef | grep "[j]ava -jar" tdlteman 22023 22006 0 Oct07 ? 00:09:58 java -jar slave.jar #看,神奇的事情发生了

关注公众号『窗外天空』
获取更多建站运营运维新知!互联网创业、前沿技术......
最新评论
想要aarch64_generic架构的,用的是Rockchip RK3308 ARMv8 Cortex-A35
水淀粉vdfv
有其他下载方式么,网站上的点击下载后没有任何反应,或者直接发给我一下?83835079@qq.com
你好,我的型号ELECOM WRC-X3200GST3,ARMv8 Processor rev 4构架,CPU mediatek/mt7622,找了很久没有找到
我的也是这样。一直无法确认ARCH架构,或是不支持。一直没办法用。不知道怎么办了