1,GREP
grep 是按行匹配,主要司责查询相关的操作
grep [option] [pattern] [file1,file2,file3,,,,]some command | grep [option] [pattern选项[OPTION] 含义-i 忽略大小写-c 只输出匹配行的数量-n 显示行号-r 递归搜索实例,比如说要查找某个目录中的文件含有某个关键字的grep -r keyword 目录-E 支持扩展正则表达式-w 匹配整个单词-l 只列出匹配的文件名-F 不支持正则,按字符串字面意思进行匹配
2,SED
对行进行处理流编辑器,对文件逐行进行处理两种形式sed [option] "pattern command " filecome command | sed [option] "pattern command">> /dev/null 可以相当于是一个黑洞,在操作中遇到不想要的东西可以丢进去&> /dev/nulloption 选项-n 只打印模式匹配的行-f 加载存放动作的文件-r 支持拓展正则-i 直接修改文件pattern 模式如果添加就只针对添加的范围,不添加默认处理全局匹配模式 含义5 只处理5行5,10 只处理第5行到第10行/关键字/ 处理含有关键字的数据那行/^A/,/^B/ 从A开头的一行到以B开头的一行command 命令查询p 打印出来查询到的结果新增a 在匹配行后新增i 在匹配行前新增r 外部文件读入,行后新增w 匹配行写入外部文件删除d修改s/old/new 只修改匹配行中第一个old进行修改s/old/new/g 将所有的old进行修改s/old/new/ig 忽略大小写并对所有old进行修改sed -p 打印内容会打印两次,除了目标文件,也会将搜索结果一并打印出来
3,AWK
三剑客的核心,主要负责对列进行处理,可以当成是cut的进阶版,但是功能比cut强大的多。
awk甚至可以作为一门单独的语言来进行学习
文本处理工具,处理数据并生成结果报告。
两种形式awk 'BEGIN{}pattern{commands}END{}' filesome command | grep [option][pattern]格式 含义BEGIN{} 处理数据之前执行的内容pattern 匹配模式 进行设置的话,针对范围进行配置,不设置则针对全部的数据进行处理{commands} 处理命令END{} 处理数字之后执行的内容内置变量 含义$0 整行内容$1-$n 当前行的第1-n个字段NF 当前行字段数 number fieldNR 当前行行号,从1开始 number rowFS 输入字段分隔符,默认为空格或者tab键 field separatorOFS 输出字段分隔符,默认为空格output field separatorors 输出行分隔符,默认为回车符output row separatorprintf格式符%s 字符串%d 数字%f 浮点数修饰符+ 右对齐- 左对齐默认为右对齐awk 'BEGIN{FS=":"}{printf "%-20s%20s\n",$1,$NF }'实例解释执行之前先对字段分割符进行设定为 :pattern设置为从第一列到最后一列使用printf 进行字符串站位设置,20s代表站多少个字节位awk 'BEGIN{FS=":"}/mail/ {printf "%10s,%20s\n",$4,$5}' passwd/mail/ 为pattern,可不写,不写默认处理全局,支持正则可以写正则,可以写$0-4之类的取列,可以写运算 ==$ awk 'BEGIN{FS=":"}{print $(NF-1)}' passwd案例解释执行之前先对字段分割符进行设定为 :pattern未进行设置,默认为全局打印 每行数据的倒数第一列脚本编写实例BEGIN{FS=":"printf "%-20s%-20s\n" ,"Username","shell"}{if($6 == "/bin" ){count ++printf "%-20s%-20s\n",$1,$NF}}END{printf "%-20s%-20s\n","Total",count}封装脚本当awk命令过于长的时候,通常采取封装成脚本文件的方法来直接引用文件执行文件内部的命令快的方法 具体封装方法如上文件命名一般作为 命令的后缀名,awk,sed之类语法中不在使用;进行分割,使用缩进进行分割'''执行的时候awk -f 脚本名 待处理文件路径即可。
