Shell字符操作命令——grep、sed、awk

来源:互联网 发布:qq一手数据出售群 编辑:程序博客网 时间:2024/05/21 06:30

`##grep:用于过滤文本内容

egrep == grep -E

grep 常用选项

选项 作用 grep –color 自动使用颜色标示匹配的关键词 grep -n 匹配出来的行前面显示行号 grep -v 对匹配的内容取反,显示未匹配行 grep -c 显示匹配的行数 grep -r 后面加目录,遍历一个目录,将目录中文件里匹配的行都打印出来

sed:可以过滤、查找和替换

sed 常用选项

选项 作用 sed -n 不打印未指定的行 sed -r 脱义,当正则里有特殊字符需要用 \ 进行转义时 sed -i 会把更改保存到文件中,实际改变文件内容,慎用 sed -e 可以进行多次匹配,若匹配的关键词在同一行会重复打印

实例:

语句 作用 sed -n '10'p 1.txt p表示打印;-n:如果不加,则会打印全部内容,并把指定的那行再打印一次 sed -n '10,20'p 1.txt 表示打印第10~20行的内容 sed -n '30,$'p 1.txt 表示打印30行到末行的内容 sed -nr '/o{2}/'p 1.txt 等价于 sed -n ‘/o\{2\}/’p 1.txt sed '/fish/'d 1.txt 将含有fish的行删除不显示 sed '1,10s/login/LOGIN/g 1.txt 将1~10行中的login替换成LOGIN,语法类似于vim中的替换 sed 's/login/LOGIN/g 1.txt 全局替换,s=1,$s sed -r 's#(^[a-z]+)(:.\*:)(.*$)#\3\2\1#g' 1.txt 替换位置

awk:可以分段、逻辑判断、数学运算

awk [-F fs] [-v var=value] [-f prog-file | 'program text'] [file...]

其中-F参数用于预先指定前面提到的字段分隔符(还有其他指定字段的方式) ,-v用于预先为awk程序指定变量,-f参数用于指定awk命令要执行的程序文件,或者在不加-f参数的情况下直接将程序语句放在这里,最后为awk需要处理的文本输入,且可以同时输入多个文本文件。

awk 常用选项

选项 作用 awk -F ‘:’ 指定以’:’为分隔符 awk –posix 让awk支持正则中的{} NR 表示行数,awk内置变量 NF 表示每行段数,awk内置变量

实例:

语句 作用 awk '/keyword/' 1.txt 匹配keyword并输出 awk -F ':' '$1~/root/' 1.txt 以:为分隔符分成若干段,用第1段匹配root并输出 awd -F ':' 'OFS="#" /root/ 1.txt OFS用来指定输出时每段之间的分隔符
0 0