sed,awk,grep,cut,find 实例

1.find / -type f -user logread -ls >/dev/null
查找用户logread所有的普通文件并输出至屏幕;
2.find . -name “.java” -mtime -2
查找当前目录下最近2天修改的java文件;
3.grep -in exp file
在file文件中搜索exp字符串,不区分大小写并显示行号(-c,只显示行数;-l,只显示文件名);
4.grep -e “^0” file(grep -e “g$” file)
在file文件中搜索以0开头的行,或者以g结束的行。grep命令支持ERE,如grep -E ‘(x1|x2)x3’ file,搜索匹配x1x3或x2x3模式的行;
5.sed -n ‘/exp1/, /exp2/p’ file
在file文件中搜索与exp1,exp2模式匹配的之间的行数据;
6.sed -n ‘/exp1/w file1
> /exp2/w file2
> ‘ file
在file文件中搜索与exp1匹配的行,写入到file1文件中,搜索与exp2匹配的行,写入到file2文件中。也可以指定行,如sed -n ‘1,7w file1
> 8,$w file2’ file,将file文件的1-7行写入到file1中,8-末尾行写入到file2中;
7.sed ‘4i\
string1\
> string2
> ‘ file
在file文件中第4行前插入string1和string2两行;
8.sed ‘a\
exp1\
exp2
‘ file
在file文件中每行后追加两行exp1和exp2;
9.sed ‘/^[ ]
$/d’ file
在file文件中删除空行,[]中包含a space and a tab;
10.sed ‘s/exp1/exp2/g’ file
将file文件中所有匹配exp1模式的字符串替换为匹配exp2模式的字符串。sed ‘s/^/exp1/‘ file,sed ‘s/$/exp1/‘ file,将file文件每行开头或者结束的地方插入exp1。sed还支持记忆模式,支持IRE;
11.awk -F”|” ‘ { print $NF}’ file
输出file每行最后一个字段的内容
awk用于格式化报文或者从文件中抽取数据包.
1.$awk ‘{print $0}’ gefforey.txt | tee gefforey.doc
该命令将在屏幕输出gefforey.txt文件内容并将其内容复制到gefforey.doc文件中.
2.$awk -F: ‘{print $1}’ gefforey.log
该命令以:为单位读取gefforey.log文件中第一列内容.
3.$awk ‘BEGIN {print “Name Belt\n————“} {print $1”\t”$3}’ gefforey.txt
该命令将在屏幕首先输出”Name Belt”,第二行输出”————“,并在输出文件内容的时候,每列之间间隔一个TAB位.可以在print语句之后加上END {print “end of output”},那么将会在文件内容输出结束的时候打印”end of output”.
4.$awk ‘$2 ~ /^baidu$/ {print $0}’ gefforey.txt
该命令显示gefforey.txt文件中以空格分隔的第二列字符串是”baidu”的所有行.
5.$awk ‘{if($2 ~ /^baidu$/) print $0}’ gefforey.txt
该命令判断如果某行第二列字符串为”baidu”,则打印出该行.
6.$awk ‘{if($2 < $3) print $0}’ gefforey.txt
该命令显示判断如果某行第二列值小于第三列值,则打印该行.awk的条件操作符有:
< 小于,> = 大于等于,< = 小于等于,~ 匹配正则表达式,= = 等于,!~ 不匹配正则表达式,!= 不等于
7.$awk ‘{if($2 ==”google1” && $3==”google2”) print $0}’ gefforey.txt
该命令判断如果某行第二列值为”google1”并且第三列值为”google2”,则打印出该行.awk的逻辑表达式有:&& AND,|| O R,! 非.
8.$awk ‘{print NF,NR,$0} END{print FILENAME}’ gefforey.txt
该命令会输出浏览记录的域个数和已读的记录数,并在输出结尾打印文件名.awk内置的变量有:
A R G C 命令行参数个数
A R G V 命令行参数排列
E N V I R O N 支持队列中系统环境变量的使用
FILENAME a w k浏览的文件名
F N R 浏览文件的记录数
F S 设置输入域分隔符,等价于命令行- F选项
N F 浏览记录的域个数
N R 已读的记录数
O F S 输出域分隔符
O R S 输出记录分隔符
R S 控制记录分隔符
(附:1.N F的一个强大功能是将变量$ P W D的返回值传入a w k并显示其目录。这里需要指定域分隔
符/.命令为:echo $PWD | awk -F/ ‘{print $NF}’;
2.显示文件名,命令为:echo “/usr/local/etc/rc.sybase” | awk -F/ ‘{print $NF}’.
9.$awk ‘{name=$1; belt=$3;if(belt ~ /yellow/) print name “is belt” belt }’ gefforey.txt
该命令将第一列的值赋给变量name,第三行的值赋给变量belt,并打印语句.awk允许在语句中进行赋值操作,赋值操作符有:=, +=, *=, / =, %=, ^ = .
10.$awk ‘gsub(/111/,222) {print $0}’ gefforey.txt
该命令将文件中所有包含111的数字替换为222,awk的内置函数有:
g s u b ( r, s ) 在整个$ 0中用s替代r
g s u b ( r, s , t ) 在整个t中用s替代r
i n d e x ( s , t ) 返回s中字符串t的第一位置
l e n g t h ( s ) 返回s长度
m a t c h ( s , r ) 测试s是否包含匹配r的字符串
s p l i t ( s , a , f s ) 在f s上将s分成序列a
s p r i n t ( f m t , e x p ) 返回经f m t格式化后的e x p
s u b ( r, s ) 用$ 0中最左边最长的子串代替s
s u b s t r ( s , p ) 返回字符串s中从p开始的后缀部分
s u b s t r ( s , p , n ) 返回字符串s中从p开始长度为n的后缀部分
g s u b函数有点类似于s e d查找和替换。它允许替换一个字符串或字符为另一个字符串或字
符,并以正则表达式的形式执行。第一个函数作用于记录$ 0,第二个g s u b函数允许指定目标,
然而,如果未指定目标,缺省为$ 0。
i n d e x(s,t)函数返回目标字符串s中查询字符串t的首位置。l e n g t h函数返回字符串s字符
长度。m a t c h函数测试字符串s是否包含一个正则表达式r定义的匹配。s p l i t使用域分隔符f s将
字符串s划分为指定序列a。s p r i n t函数类似于p r i n t f函数(以后涉及),返回基本输出格式f m t的
结果字符串e x p。s u b(r,s)函数将用s替代$ 0中最左边最长的子串,该子串被( r)匹配。
s u b(s,p)返回字符串s在位置p后的后缀。s u b s t r(s,p,n)同上,并指定子串长度为n。
11.$echo “65” | awk ‘{printf “//%c\n”,$0}’
该命令管道输出65到awk,并观察其ASCII字符.awk的printf函数格式如下:
% c A S C I I字符
% d 整数
% e 浮点数,科学记数法
% f 浮点数,例如(1 2 3 . 4 4)
% g a w k决定使用哪种浮点数转换e或者f
% o 八进制数
% s 字符串
% x 十六进制数

awk命令也许是linux系统中最为复杂的命令,需要好好的练习!