grep sed awk

grep命令用于查找文件里符合条件的字符串。

[root@host tmpdata]# grep 'shenzhen' *.txt   
hivelog.txt:tianyongtao 1       50      shenzhen
hivelog.txt:wangwu      1       85      shenzhen
hivelog.txt:zhangsan    1       20      shenzhen
hivelog.txt:liuqin      0       56      shenzhen
hivelog.txt:wangwu      0       47      shenzhen
hivelog.txt:liuyang     1       32      shenzhen

[root@host tmpdata]# grep 'shenzhen' hivelog.txt
tianyongtao     1       50      shenzhen
wangwu  1       85      shenzhen
zhangsan        1       20      shenzhen
liuqin  0       56      shenzhen
wangwu  0       47      shenzhen
liuyang 1       32      shenzhen

[root@host tmpdata]# grep 'shenzhen' hivelog.txt hivelog1.txt
hivelog.txt:tianyongtao 1       50      shenzhen
hivelog.txt:wangwu      1       85      shenzhen
hivelog.txt:zhangsan    1       20      shenzhen
hivelog.txt:liuqin      0       56      shenzhen
hivelog.txt:wangwu      0       47      shenzhen
hivelog.txt:liuyang     1       32      shenzhen
hivelog1.txt:tianyongtao        1       50      shenzhen
hivelog1.txt:wangwu     1       85      shenzhen
hivelog1.txt:zhangsan   1       20      shenzhen
hivelog1.txt:liuqin     0       56      shenzhen
hivelog1.txt:wangwu     0       47      shenzhen
hivelog1.txt:liuyang    1       32      shenzhen

[root@host tmpdata]# grep 'shenzhen' hivelog.txt hivelog1.txt |grep 'wangwu'
hivelog.txt:wangwu      1       85      shenzhen
hivelog.txt:wangwu      0       47      shenzhen
hivelog1.txt:wangwu     1       85      shenzhen
hivelog1.txt:wangwu     0       47      shenzhen

 sed命令是利用script来处理文本文件。

sed可依照script的指令,来处理、编辑文本文件。

Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed :实现数据的替换,删除,增加,选取等(以行为单位进行处理)

[root@host tmpdata]# cat tian.txt
name tian
[root@host tmpdata]# sed -i "1i/sex 1" tian.txt   //第一行添加一条记录
[root@host tmpdata]# cat tian.txt              
/sex 1
name tian
[root@host tmpdata]# sed -i "1isex 1" tian.txt  //第一行添加一条记录
[root@host tmpdata]# cat tian.txt             
sex 1
/sex 1
name tian
 [root@host tmpdata]# sed -i "2ilevel 45" tian.txt     //第二行添加一条记录        
[root@host tmpdata]# cat tian.txt
sex 1
level 45
/sex 1
name tian

[root@host tmpdata]# echo "home henan">>tian.txt  //尾部添加一条记录
[root@host tmpdata]# cat tian.txt
sex 1
level 45
/sex 1
name tian
home henan

 sed并不会修改原文件中的内容,除非重定向新文件

[root@host tmpdata]# cat tian.txt
sex 1
level 45
/sex 1
name tian
home henan
[root@host tmpdata]# sed '3d' tian.txt //删除第三行内容
sex 1
level 45
name tian
home henan

[root@host tmpdata]# sed '3,5d' tian.txt//删除3-5行的记录
sex 1
level 45

$表示最后,末尾

[root@host tmpdata]# sed '$d' tian.txt  //删除最后一行
sex 1
level 45
/sex 1
name tian

[root@host tmpdata]# sed -i '$i age 85' tian.txt //最后一行位置添加一条记录,原来的最后一行推后
[root@host tmpdata]# cat tian.txt
sex 1
level 45
/sex 1
name tian
age 85
home henan

sed替换字符串

 替换所有匹配关键字
sed 's/原字符串/替换字符串/g'

[root@host tmpdata]# cat tian.txt
sex 1
level 45
/sex 1
name tian
age 85
age 85
home henan
[root@host tmpdata]# sed -i 's/age/level/g' tian.txt //将age替换为level
[root@host tmpdata]# cat tian.txt
sex 1
level 45
/sex 1
name tian
level 85
level 85
home henan

 批量替换字符串

sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`

awk : 以字段为单位进行处理

[root@host tmpdata]# cat hivelog.txt
tianyongtao     1       50      shenzhen
wangwu  1       85      shenzhen
zhangsan        1       20      shenzhen
liuqin  0       56      shenzhen
wangwu  0       47      shenzhen
liuyang 1       32      shenzhen
[root@host tmpdata]# awk '{print $1,$3,$4}'  hivelog.txt  //打印第1,3,4列
tianyongtao 50 shenzhen
wangwu 85 shenzhen
zhangsan 20 shenzhen
liuqin 56 shenzhen
wangwu 47 shenzhen
liuyang 32 shenzhen
[root@host tmpdata]# awk '{print $1,$4}'  hivelog.txt   //打印第1,4列
tianyongtao shenzhen
wangwu shenzhen
zhangsan shenzhen
liuqin shenzhen
wangwu shenzhen
liuyang shenzhen

[root@host tmpdata]# awk '$3>50{print $1,$4}'  hivelog.txt  //先过滤(第三列大于50),然后打印第1,4列
wangwu shenzhen
liuqin shenzhen

[root@host tmpdata]# awk '$3>50'  hivelog.txt          //过滤第三列大于50的行
wangwu  1       85      shenzhen
liuqin  0       56      shenzhen

-------------

[root@host tmpdata]# head -10 ips.txt     
0.0.0.0 0.255.255.255 IANA
1.0.0.0 1.0.0.0 美国
1.0.0.1 1.0.0.1 美国
1.0.0.2 1.0.0.255 美国
1.0.1.0 1.0.3.255 福建省
1.0.4.0 1.0.7.255 澳大利亚
1.0.8.0 1.0.15.255 广东省
1.0.16.0 1.0.31.255 日本
1.0.32.0 1.0.63.255 广东省
1.0.64.0 1.0.127.255 日本

[root@host tmpdata]# tail -10 ips.txt  | awk '{print $3,$1,$2}'
IANA机构 224.0.1.9 224.0.1.9
IANA机构 224.0.1.10 224.0.1.10
IANA机构 224.0.1.11 224.0.1.11
IANA 224.0.1.12 224.251.255.255
IANA保留地址 224.252.0.0 224.255.255.255
IANA保留地址 225.0.0.0 239.255.255.255
IANA保留地址 240.0.0.0 247.255.255.255
IANA保留地址 248.0.0.0 248.255.255.255
IANA保留地址 249.0.0.0 254.255.255.255
IANA 255.0.0.0 255.255.254.255

[root@host tmpdata]# tail -10 ips.txt  | awk '{print $3,$2}'  
IANA机构 224.0.1.9
IANA机构 224.0.1.10
IANA机构 224.0.1.11
IANA 224.251.255.255
IANA保留地址 224.255.255.255
IANA保留地址 239.255.255.255
IANA保留地址 247.255.255.255
IANA保留地址 248.255.255.255
IANA保留地址 254.255.255.255
IANA 255.255.254.255

原文地址:https://www.cnblogs.com/playforever/p/9389119.html