grep进阶用法

Linux环境每天用得最多的命令就是grep,这里把一些稍微进阶的用法整理一下

常用选项

可以参见man grep或者grep命令,最常用的选项如下:

-v 反转查找
-w 只显示全字符合的列
-i 忽略字符大小写的差别
-o 只输出文件中匹配到的部分
-n 显示列号
-F 禁用正则表达式(用来搜索包含正则表达式特殊字符的的场景)

正则表达式

命令示例:

grep -E "[0-9]+" sentence.txt
-E 扩展的正则表达式
-P Perl正则表达式(支持一些高级用法,比如先行断言、后发断言、负向零宽断言等)

支持

# 特殊字符
[0-9] # 集合
[^0-9] #不在集合 
(hello|world)       # 或
\s    #空字符(空格,Tab,换行)
\b   # 字符开始
\w   #数字、字母、下划线
^     # 行首
$   # 行尾
# 计数
?
*
+
{n}
{n,}
{,m}
{n,m}

\d #一般正则表达式都有\d,表示数字,grep不支持。可以使用[0-9]表示

常见grep用法

  • 单词出现的次数
grep -o word sentence.txt | wc -l
  • 包含单词的行数
grep -c word sentence.txt
  • 找到特定数字并反向排序
grep -Po "(?<=cost: )[0-9]+" all.log

这里使用了Perl正则

  • kill进程
ps -ef | grep java | grep -v "grep" | awk '{print $2}' | xargs kill

Linux命令进阶用法系列

  • find进阶用法

参考

  • grep命令
  • grep零宽断言&正则表达式

你可能感兴趣的:(grep进阶用法)