1.管道
linux中使用|将两个命令隔开,|左边的输出作为|右侧命令的输入
eg:cat 1.txt|grep "xxxy"
2.正则表达式
正则是记录文本规则的代码
练习环境:https://tool.oschina.net/regex
常用的元字符 . 匹配除换行符以外的任意字符 \w匹配字母或数字或下划线或汉字 \s匹配任意的空白符 \d匹配数字 \b匹配单词的开始或结束 ^匹配字符串的开始 $匹配字符串的结束
常用的限定符 *重复0次或者更多次 +重复一次或多次 ?重复0次或一次 {n}重复n次 {n,}重复n次或更多次 {n,m}重复n到m次
匹配以字母a开头的单词:\ba\w*\b
匹配6个字母的单词:\b\w{6}\b
匹配1个或更多连续的数字:\d+
匹配5-12位qq号:\d{5,12}
匹配只包含5-12位qq号:^\d{5,12}$
3.grep:根据用户指定的模式对目标文本进行过滤,显示被模式匹配到的行
grep options pattern file option: -v 显示不被pattern匹配到的行 -i 忽略字符大小写 -n 显示匹配的行号 -c 统计匹配的行数 -o 仅显示匹配到的字符串 -E 使用ERE,相当于egrep,开启扩展(Extend)的正则表达式
--color 将匹配到的内容以颜色高亮显示 -A n 显示匹配到的字符串所在的行及其后n行,after -B n 显示匹配到的字符串所在的行及其前n行,before -C n 显示匹配到的字符串所在的行及其前后各n行,context
查找文件内容包含html的行数 cat response.txt|grep -n html 、 grep -n html response.txt
查找文件内容不包含html的行数 cat response.txt|grep -nv html
查找文件内容以h开头的行:grep -n ^h response.txt
查找文件内容以t结尾的行:grep -n t$ response.txt
4.sed:是流编辑器,一次处理一行内容
行存储在模式空间-sed命令处理-进入屏幕-清空模式空间,源文件不会被改变 sed [-hnV][-e<script>][-f<script FILE>][FILE] -h 显示帮助,man sed(j向下翻页,k向上翻页,/内容 去查找,N上一个,n下一个) -n 仅显示script处理后的结果 -e<script>以选项中指定的script来处理输入的文本文件 -f<script>以选项中指定的script来处理输入的文本文件 -e后的常用动作: a 新增,sed -e '4 a newline' 在第4行后新增一行 c 取代,sed -e '2,5c No 2-5 number' c后面的东西取代2-5行内容 d 删除,sed -e '2,5d' 删除2-5行的内容 i 插入,sed -e '2i newline' 在第2行前插入一行 p 打印,sed -n '/root/p' 打印匹配到的/root/---/正则表达式/ s 取代,sed -e 's/old/new/g' 全局修改/new/取代/old/ ,不加g时表示只修改每行第一个匹配到的值
-i直接修改文件内容:sed -i '2i newline' file
5.awk:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
把行作为输入,并赋值给$0 ,将行切断,从$1开始,对行匹配正则/执行动作-打印内容,读入第二行循环前面几步的动作 awk 'pattern + action' [FILE]
-pattern 正则表达式
-action 对匹配到的内容执行的命令(默认为输出每行内容)
常用参数
FILE awk浏览的文件名
BEGIN 处理文件之前要执行的操作
END 处理文件之后要执行的操作
FS 设置输入域分隔符,等价于命令行-F选项
NF 浏览记录的域的个数(列数)
NR 已读的记录数(行数)
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0 整体记录
$1 表示当前行的第一个域,以此类推
搜素/etc/passwd有root关键字的所有行,并显示对应的shell