正则表达式
编辑器
- vim;
- sed1;
有趣的例子
s/(b?)-/x\u\1/g
- 作用在a-b-会变成axxB
- 来源参考
- 解读:正则表达式部分是(b?)-,将会匹配a-b-两个部分,分别是-,b-;-替换成x,因为匹配group1(就是正则表达式中第一个括号被匹配的内容)是空,所以
\u
不起作用;b-替换成x\u\1,因为匹配group1是b
,所以\u
发挥作用使得最终结果替换为xB
shell中提取文件名数字
目标是从一系列数字文件夹名称提取出其中的数字
ls */wave.h5 -1 | grep -o -P '^\d{1,2}' | tr '\n' ' '
- 其中
ls -1
使得文件输出1行一个 grep -o
可以选择输出匹配的部分,-P
选择Perl风格的正则表达式,因为后面正则表达式^\d{1,2}
中的\d
是Perl风格,这个正则表达式意味着选择开头是1-2个数字的部分tr
可以把换行符给替换成空格,这样就能够更方便的处理
shell实现提取某些列中的内容
<command1> |tail -n +5|head -n 34|awk '$9 ~ /1/ { printf "%s\n",$11}'|xargs <command2>
command1
输出经过管道tail
取第5行开始后的内容,head
取前34行,相当于选取5-39行awk
中$9 ~ /1/
匹配第9列中包含1
数字的行,打印该行第11列,并换行输出xargs
输出参数到command2
,这个工具用于不能够接收管道操作的命令。
vim中替换字符
vim
中替换字符串需要在正常模式下
:s/[\+]\".*\.pdf\"//g
其中[\+]
用来匹配+
号,因为\+
匹配会报错
(NFA regexp) Misplaced +
提取auth.log
中异常信息
将异常登录的用户名筛选出来
sudo cat auth.log|grep "Invalid user"|sed 's/^.*user //g'|sed 's/ from.*$//g'|sort -u > log
···