Liunx下文本处理
grep
命令用法
主要用法:
grep pattern_string filename1 filename2...
命令参数:
参数 | 介绍 | 例子 |
---|---|---|
-color=auto | 标记处匹配到的单词 | |
-E | 不加这个参数,grep只解释匹配样式中默写特殊字符,此参数可以扩展正则表达式 | grep -E “[a-z]+” filename |
-o | 只输出匹配到的部分(默认输出含有匹配到字符串所在行) | |
-v | 输出不含匹配到的行 | |
-c | 统计匹配行的数量 | grep -o “[0-9]”|wc -l (输出匹配的个数) |
-n | 输出行号 | |
-l | 搜索多个文件并找出在哪一个文件中 | |
-i | 忽略匹配样式大小写 | |
-e | 可以匹配多个样式 | grep -e “pattern-1” “pattern-2” |
-f | 从文件中读取匹配样式 | grep -f pattern_src filename |
-A | 打印匹配内容之后的 n 行 | grep -e pattern filename -A n |
-B | 打印匹配内容之前的 n 行 | |
-C | 打印匹配内容前后 n 行 |
其他用法
grep pattern_string dirname -R
参数 | 介绍 | 例子 |
---|---|---|
–inclue | 指定搜索某些文件 | |
–exclude | 排除某些文件 |
Sed
使用语法
sed [option] 'command' input_file
option参数
- -n使用安静模式,不显示执行的结果
- -e直接在指令模式进行sed的动作编辑
- -f从文件读取sed命令
- -r让sed命令支持扩展正则表达式
- -i直接修改文件内容
command命令
a:在匹配中的行后添加字符串
- /first/a \add one 对于有first的行后添加 add one
- /是分割符 \后面试增加的内容
c:将匹配的行替换成指定字符串
- /^ha.*day$/c \replace line 以ha开头day结尾的行替换成replace line
d:删除匹配的行
- /some/d 删除包含some的行
i:在匹配中的行前添加字符串
- 如a\
p:print即打印,该命令会打印当前选择的行到屏幕上
s:替换,将匹配到的字符串替换成我们想要的字符串
- s/old/new/g 对于全部的old替换成new,g表示对所有行适用,否则只替换第一行
- s/(part1)(part2)/\2\1/ 在替换部分\1对应之前的part1,\2对应part2,所以该命令的作用是将part1,part2匹配后调换顺序
1:$,1表示第一行,$表示最后一行
awk
参考资料
awk已经超脱了一个工具了,更像是一门脚本语言。。