后面写过三剑客命令的具体介绍:Linux三剑客Awk、Sed、Grep 命令详解
Grep实例介绍
grep "San" testfile #过滤有San的行grep '^J' testfile #显示以J结尾的行grep '70$' testfile #显示以70结尾的行grep -v "834" testfile #显示所有不包含834的行grep ':12/' testfile #显示:12/的行 grep ':498-' testfile #显示:498-的行grep '[A-Z][a-z]{4}:[[:space:]][A-Z]' testfile #显示这样的行,一个大写字母+四个小写字母+空格+一个大写字母grep '[a-z]{1,}[[:space:]][Kk]' testfile #显示包含K k的行grep -n '[0-9]{6,}$' testfile #显示6位数字的行,并打印行号grep -i "lincoln" testfile #显示有lincoln的行,不辨别大小写
Sed实例介绍
sed 's/Jon/Jonathan/g' testfile #全局替换(Jon替换成Jonathan)sed '1,3d' testfile #删除文件1-3行sed -n '5,10p' testfile #打印文件5-10行内容sed '/Lane/d' testfile #删除包蕴含lane的行sed -ne '/[1-9]{5}:1[12]/p' testfile #打印由5个数字+:11/12的行sed 's/^Fred/***&/' testfile #在以Fred结尾的行前加上***sed -e 's/.*Jose.*/JOSE HAS RETIRE/g' testfile #将蕴含Jose的行替换成JOSE HAS RETIREsed -n '/^Popeye/p' testfile |sed 's/[0-9]{1,}/[0-9]{1,}/[0-9]{1,}/11/14/46/' #将以Popeye结尾的行打印,而后将“数字/数字/数字”这格局的数字串替换成 11/14/46##pattern{n} 匹配模式呈现n次。##pattern{n,} 匹配模式呈现起码n次。##pattern{n,m} 匹配模式呈现n到m次之间,n , m为0 - 2 5 5中任意整数sed '/^$/d' testfile #删除所有空行sed 's/.$//g' #删除以.结尾行sed 's/^[][]*//g' #删除行首空格sed 's//.[][]*/[]/g' #删除句号后跟两个或更多的空格,用一个空格代替sed 's/^.//g' #删除第一个字符sed 's/COL/(.../)//g' #删除紧跟COL的后三个字符sed 's/^////g' #删除门路中第一个/sed -n '3,/245700/'p testfile#从第三行开始查问到245700完结并打印sed -n '2,26!'p testfile#打印文件(除2-26)的行
Awk实例介绍
awk –F : ‘{print $2}’ datafile#以:分隔打印第二列awk –F : ‘/^Dan/{print $2}’ datafile#以:分隔打印以Dan结尾行的第二列内容awk –F : ‘/^[CE]/{print $1}’ datafile #打印以C或E结尾行的第一列awk –F : ‘{if(length($1) == 4) print $1}’ datafile #打印以:分隔且长度为4字符的第一列内容awk –F : ‘/[916]/{print $1}’ datafile#匹配916的行以:分隔打印第一列awk -F : '/^Vinh/{print "a"$5}' 2.txt#显示以Dan结尾行并在第五列前加上aawk –F : ‘{print $2”,”$1}’ datafile#打印第二列第一列并以,分隔awk -F : '($5 == 68900) {print $1}' 2.txt#以:分隔打印第五列是68900的行第一列 awk -F : '{if(length($1) == 11) print $1}' 2.txt#打印以:分隔且长度为4字符的第一列内容awk -F : '$1~/Tommy Savage/ {print $5}' 2.txtawk -F : '($1 == "Tommy Savage") {print $5}' 2.txt#打印以:分隔且第一列为Tommy Savage的第五列内容ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'#统计目录个的文件所有的字节数awk 'BEGIN{size=0;} {size=size+$5;} END{print "[end]size is ",size/1024/1024,"M"}' #以M为单位显示目录下的所有字节数awk 'BEGIN{a=10;a+=10;print a}'20 #a+10等价于 a=a+10echo|awk 'BEGIN{a="100testaaa"}a~/test/{print "ok"}' #正则匹配a 是否有test字符,成立打印okawk 'BEGIN{a="b";print a=="b"?"ok":"err"}'okawk 'BEGIN{a="b";print a=="c"?"ok":"err"}'err#三目运算符?:awk '/root/{print $0}' passwd #匹配所有蕴含root的行awk -F: '$5~/root/{print $0}' passwd # 以分号作为分隔符,匹配第5个字段是root的行ifconfig eth0|awk 'BEGIN{FS="[[:space:]:]+"} NR==2{print $4}'#打印IP地址awk '{print toupper($0)}' test.txt#toupper是awk内置函数,将所小写字母转换成大写