今天在一哥们的blog里看到一段shell,当时没有反应过来,后来查了一下,主要是正则的环视功能用的比较少,正好借此来学习一下。
history|sed "s#^\s\+[0-9]\+\s\+##g" | grep -oP "(?<=^|\|)\w+"|sort |uniq -c| sort -k1,1nr -k2
说明:
# 在s后面表示替换分隔符
^\s 表示以任意空白字符开始
\+ 表示匹配前面的表达式一次或多次
[0-9] 表示匹配数字
-oP 只显示匹配内容,并且把匹配内容当做perl解释
(?<=) 肯定逆序环视,用来定位
^|\| 应该看做^ | \|,表示^或者|
\w+ 表示匹配一个包含数字、字母的单词
(?<=^|\|)\w+ 表示在该单词的左边必须是|或者单词本身的开始
后面的不说了,太简单了。
阅读(1118) | 评论(1) | 转发(0) |