linux 文本处理三剑客
目录
- grep
- sed
- awk
grep 是文本搜索工具,能根据正则表达式匹配到文本相应的行
格式:
grep [选项] 表达式 [要匹配的文件]
常见选项:
-color=auto 对匹配到的文本着色显示 -m # 匹配#次后停止 -v 显示不被pattern匹配到的行,即取反 -i 忽略字符大小写 -n 显示匹配的行号 -c 统计匹配的行数 -o 仅显示匹配到的字符串 -q 静默模式,不输出任何信息 -A # after, 后#行 -B # before, 前#行 -C # context, 前后各#行 -e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file -w 匹配整个单词 -E 使用ERE,相当于egrep -F 不支持正则表达式,相当于fgrep -f file 根据模式文件处理 -r 递归目录,但不处理软链接 -R 递归目录,但处理软链接
sed行编辑器,从文件或管道中读取一行,处理一行,接着处理下一行。这样一行一行的处理整个文件的内容。
格式:
sed [选项] {sed脚本} [文件]
sed 常用选项
-n 不输出模式空间内容到屏幕,即不自动打印 -e 多点编辑 -f FILE 从指定文件中读取编辑脚本 -r, -E 使用扩展正则表达式 -i.bak 备份文件并原处编辑 -s 将多个文件视为独立文件,而不是单个连续的长文件流
#说明: -ir 不支持 -i -r 支持 -ri 支持 -ni 会清空文件
sed脚本---表示地址
1. 不给地址:对全文进行处理 2. 单地址: #:指定的行,$:最后一行 /pattern/:被此处模式所能够匹配到的每一行 3. 地址范围: #,# # 从#行到第#行,3,6 从第3行到第6行 #,+# # 从#行到+#行,3,+4 表示从3行到第7行 /pat1/,/pat2/ # 从字符串pat1的行,到字符串pat2的行的内容 #,/pat/ /pat/,# 4. 步进:~ 1~2 奇数行 2~2 偶数行
sed 脚本---命令
p 打印当前模式空间内容,追加到默认输出之后 Ip 忽略大小写输出 d 删除模式空间匹配的行,并立即启用下一轮循环 a [\]text 在指定行后面追加文本,支持使用\n实现多行追加 i [\]text 在行前面插入文本 c [\]text 替换行为单行或多行文本 w file 保存模式匹配的行至指定文件 r file 读取指定文件的文本至模式空间中匹配到的行后 = 为模式空间中的行打印行号 ! 模式空间中匹配行取反处理 q 结束或退出sed
sed 查找和替换
s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###替换修饰符: g 行内全局替换 p 显示替换成功的行 w /PATH/FILE 将替换成功的行保存至文件中 I,i 忽略大小写
sed使用实例