首页 > 代码库 > linux三剑客awk、sed、grep
linux三剑客awk、sed、grep
linux三剑客awk、sed、grep
1、awk主要用来做分列、匹配、计算的工作
2、sed主要用来做替换的(流处理)
3、grep主要用来过滤出需要的文本
awk(默认的分隔符为空格)awk -F ":" ‘/bonzi/{if (NR==2) print $0}‘(一般模式)
-F 设置分隔符,可以设置多个分隔符 -F "[:!]+"
NR 表示行号
$NF 表示尾行
NF 当前记录中的字段个数
内置函数
gsub(r,s) | 在整个$0中用s代替r |
gsub(r,s,t) | 在整个t中用s替代r |
index(s,t) | 返回s中字符串t的第一位置 |
length(s) | 返回s长度 |
match(s,r) | 测试s是否包含匹配r的字符串 |
split(s,a,fs) | 在fs上将s分成序列a |
sprint(fmt,exp) | 返回经fmt格式化后的exp |
sub(r,s) | 用$0中最左边最长的子串代替s |
substr(s,p) | 返回字符串s中从p开始的后缀部分 |
substr(s,p,n) | 返回字符串s中从p开始长度为n的后缀部分 |
sed(流编辑)sed -n ‘2s#原#改#g‘ file
-n取消默认输出
-i修改内容
-e允许多项编辑
-r扩展正则
sed -n ‘/bonzi/s#原#改#gp’ file
sed -i ‘2,5s#原#改#g‘ file
后项引用的例子:
[root@www test]# ifconfig eth1|sed -nr ‘2s#.*addr:(.*) Bc.*$#\1#gp‘
192.168.1.8
grep(过滤文本)
-v排除
-i不区分大小写
-o只输出匹配到的内容
-A打印匹配到后面的行,-A 3打印后三行
-B打印匹配到的前面的行,-B 4打印前4行
-C打印匹配到的上下文的行,-C 5打印上下5行
linux三剑客awk、sed、grep