1.grep命令总结

[root@cacti ~]# cat zh888.txt  //查看zh888.txt内容

123
456
abc
def
def
[root@cacti ~]# grep -c "123" zh888.txt //打印123的行数为1行
1
[root@cacti ~]# echo "123456">>zh888.txt //在追加123456到zh888.txt文本中

[root@cacti ~]# grep -c "123" zh888.txt  //打印123的行数变为2

2
[root@cacti ~]# grep -v "123" zh888.txt //把123行不打印出来
456
abc
def
def
[root@cacti ~]# grep -n "123" zh888.txt //输出内容和行数
1:123
6:123456
[root@cacti ~]# grep [0-9] zh888.txt //grep0-9的数字
123
456
123456
[root@cacti ~]# grep -v [0-9] zh888.txt //去掉0-9
abc
def
def
[root@cacti ~]# grep '^1' zh888.txt   //,”^”表示行的开始,”$”表示行的结尾,那么空行则表示”^$”,
123
123456
[root@cacti ~]# grep 'f$' zh888.txt //过滤f结尾的内容
def
def
[root@cacti ~]# grep '^[^a-zA-Z]' zh888.txt //把数字全部过滤出来
123
456
123456
456789
234567
[root@cacti ~]# grep '1..4' zh888.txt    //“.”表示任意一个字符,上例中,就是把符合r与o之间有两个任意字符的行过滤出来。
123456

[root@cacti ~]# grep '123*' zh888.txt     //“*”表示零个或多个前面的字符。
123
123456

[root@cacti ~]# grep '.*' zh888.txt   //‘.*’表示零个或多个任意字符,空行也包含在内。
123
456
abc
def
def
123456
456789
234567

2.sed的命令总结
[root@cacti ~]# sed -n '1'p zh888.txt  //打印zh888.txt第一行内容
123

[root@cacti ~]# sed -n '1,3'p zh888.txt //打印1-3行的内容

123
456
abc

[root@cacti ~]# sed -n '/abc/'p zh888.txt //打印包含abc的字符串内容

abc

[root@cacti ~]# sed -n '/^1/'p zh888.txt //打印1开头的内容

123
123456

[root@cacti ~]# sed -n '/6$/'p zh888.txt //打印6结尾的内容

456
123456

[root@cacti ~]# sed -n '/1..4/'p zh888.txt //打印1..4的任意内容

123456

[root@cacti ~]# sed -n '/23*/'p zh888.txt  //大衣呢23结尾的任意内容
123
123456
234567

[root@cacti ~]# sed -e '1'p -e '/123/'p -n zh888.txt //打印123开头的内容

123
123
123456

[root@cacti ~]# sed '1'd zh888.txt //删除第一行内容

456
abc
def
def
123456
456789
234567

[root@cacti ~]# sed '2,$'d zh888.txt //删除2到结尾的所有内容

123

[root@cacti ~]# sed '1,3'd zh888.txt //删除1到3的内容

def
def
123456
456789
234567

[root@cacti ~]# sed '/123/'d zh888.txt //删除123的内容

456
abc
def
def
456789
234567

[root@cacti ~]# sed '1,2s/123/888/g' zh888.txt //1到2行的123替换成888以全局替换,/可以换成#或者@都是可以的。

888
456
abc
def
def
123456
456789
234567

[root@cacti ~]# sed 's/[0-9]//g' zh888.txt //把0到9数字全部过滤掉

abc
def
def

[root@cacti ~]# sed 's/[a-zA-Z]//g' zh888.txt //吧a-zA-Z的字母全部替换掉

123
456

 

123456

456789
234567

3.awk命令总结

[root@cacti ~]# echo "1:2:3">>zh888.txt //添加内容到zh888中去

[root@cacti ~]# echo "4:5:6:7">>zh888.txt //添加内容到zh888中区

[root@cacti ~]# tail -n2 zh888.txt |awk -F':' '{print $1}' //查看末尾2行利用管道和分隔符打印第一段字段内容。
1
4

[root@cacti ~]# tail -n2 zh888.txt |awk -F':' '{print $1"zh888"$2"zh888"}' //在第一字段和第二字段末尾加上zh888

1zh8882zh888
4zh8885zh888

[root@cacti ~]# tail -n2 zh888.txt |awk -F':' '{print "zh888"$1}' //在第一字段前面添加zh888内容

zh8881
zh8884

[root@cacti ~]# awk '/123/' zh888.txt //查找123内容

123
123456

[root@cacti ~]# awk -F':' '$1~/7/' zh888.txt  //让awk来匹配第一段7开头的数字

456789
234567

 

[root@cacti ~]# awk -F':' '/1/ {print $2} /2/ {print $3}' zh888.txt //利用awk连续匹配

2
3

[root@cacti ~]# awk -F':' '$2=="5"' zh888.txt

4:5:6:7
//利用逻辑判断等于来判断第二字段是否是5然后打印出来,awk中是可以用逻辑符号判断的,比如’==’就是等于,也可以理解为“精确匹配”。另外也有’>’, ‘>=’, ‘<’, ‘<=’, ‘!=’ 等等,值得注意的是,即使$3为数字,awk也不会把它当数字看待,它会认为是一个字符。所以不要妄图去拿$3当数字去和数字做比较。

[root@cacti ~]# awk '{print NR}' zh888.txt //利用分隔符分割一共多少段
1
2
3
4
5
6
7
8
9
10

[root@cacti ~]# awk '{print NF}' zh888.txt //一共有多少行

1
1
1
1
1
1
1
1
1
1

[root@cacti ~]# awk 'NR>=5' zh888.txt //大于5的行数打印出来

def
123456
456789
234567
1:2:3
4:5:6:7