文件查找工具:grep、egrep、fgrep
下面主要介绍:grep和sed命令
行首锚定符 ^PATTERN
行尾锚定符 $
\<PATTERN 词首锚定符 加上引号单双都行
PATTERN\>词尾 锚定符
. 匹配任意单个字符 不匹配回车符
* 匹配此前的字符0到任意次
。*匹配任意长度的任意字符
正则表达式工作在贪婪模式:尽可能长的匹配符合模式的字符串
精确匹配次数
? 匹配此前的字符 0次或1次 ;
\{m,n\} 至少m次。至多n次
\{0,5}
[ ]匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
-v 不匹配的 -i 忽略大小写
- r
-B 后面跟的是数字n,显示前n行
-A 显示后n行
-C 显示前后n行
-O 显示匹配的字符串而非查找的那一行
-E 支持扩展正则表达式的
\(\) \1 , 引用 此前括号内 的内容
扩展正则表达式 grep -E
{}()|(或者)+(匹配一次)
标准输入:keyboard 用 0来表示
标准输出:monitor 用1来表示
标准错误输出:monitor 用2来表示
重定向:
>输出重定向 覆盖 不可返
>>追加重定向相当于重新写入
可以用set来设置是否用输出重定向:
set -C 不能用>
set +C 继续使用>
错误输出重定向:2> 只定向正确输出
2>>加重定向
整合正确错误的数据流在一个文件中: &>
在Linux系统中命令执行结后,都有一个返回码
成功执行:0 错误:1-255
获取返回值 echo $?
/dev/null,bit bucket, 位桶
<输入重定向
<<
cat > /tmp/a.out << END
管道:|
把前一个命令的输出当作前一个命令的输入
COMMAND1 | COMMAND2 | COMMAND3
sed
使用基本正则表达式
stream editor 行编辑器
非交互式编辑器
没有破坏性
命令:
d 删除行;
使用方式:sed "ADDR1 ,ADDR2/command" inputfile
,表示一个范围
也可以用字符匹配来用:
/PATTERN/command
/PATTERN1/,/PATTERN/
p 显示出模式匹配的行 显示两次 即是打印命令
-n 只显示模式匹配到的内容 即set -n ...
a\ 在匹配到的一行后添加一行\n
i\命令光标在匹配到行的上方
!对匹配条件取反的
s 查找替换
s@@@ g i标志位
sed的常用选项:
-n :quiet
-e : -e '' -e ' '一次指定多个条件
-i :可直接修改原文件
-f :可以读取sed脚本