grep/sed/awk

grep sed awk

  • grep:负责搜索
  • sed:(编辑)处理行,是一种在线编辑器,一次处理一行内容,处理时,把当前处理的行存储在零时缓冲区中,然后用sed命令处理缓冲区中的内容,处理完毕后,把缓存区的内容送往屏幕,然后转而执行下一行,这样不断重复,直到文件末端,这里的文件的内容并没有改变。

可以用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

  • awk:(内容分许并处理)处理列:倾向于将一行分成数个列来处理,其就是按逐行将文本读入,以空格为默认分割符将每行切片,切开的部分再进行各种分析处理。
#cat /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
daemon:x:2:2:daemon:/sbin:/sbin/nologin 
bin:x:1:1:bin:/bin:/sbin/nologin
sys:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin 

只是显示/etc/passwd的账户
#cat /etc/passwd |awk  -F ':'  '{print $1}'  
root
daemon
bin
sys

显示多行
#cat /etc/passwd |awk  -F ':'  '{print $1"\t"$7}'
root    /bin/bash
daemon  /bin/sh
bin     /bin/sh
sys     /bin/sh

使用BEGIN END模块
#cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'
name,shell
root,/bin/bash
daemon,/bin/sh
bin,/bin/sh
sys,/bin/sh
blue,/bin/nosh

实战

1. sort -u和uniq (混合使用),最好先用sort把所有重复的排序到一起,然后再用uniq去重,防止多次去重

uniq所谓的重复是连续出现的相同记录
- -c:在每行开头显示重复行出现的次数;
- -d:仅显示重复的列;
- -f 栏位:忽略指定的栏;
- -s N:指定可以跳过前N个字符;
- -w 字符位数:指定用于比较的最大字符数;
- -u:仅显示出现一次的行列;

2. cut 截取
  • N- 从第N个字符、字节、字段到结尾
  • N-M 截取N-M
  • -M 从第一个到M
  • -b字节
  • -c字符
  • -d指定分割符
  • -f,和-d配合使用,有了-d就必须有-f
3. wc 计算数字,可以帮助计算文件的字节数、字数或者是列数
  • -c或–bytes或——chars 只显示bytes数
  • -l或-lines:只显示列数
  • -w或——words:只显示字数
4. tr 对标准输入的字符进行替换、压缩和删除
  • -c或——complerment:取代所有不属于第一字符集的字符;
  • -d或——delete:删除所有属于第一字符集的字符;
  • -s或–squeeze-repeats:把连续重复的字符以单独一个字符表示;
  • -t或–truncate-set1:先删除第一字符集较第二字符集多出的字符
5. diff a b 求a与b不相同的文件
6. 从多个文件中统计IP的个数

转自:https://blog.csdn.net/u012270113/article/details/38711611

若干个文件如hostsAA_平台.cfg 、 hostsBB_服务.cfg/hostsCC_平台.cfg 、 hostsDD_服务.cfg、 hostsXX_平台.cfg,每个文件定义了很多主机数,每个主机配置定义格式如下:

 define host{
    use             linux-server
    host_name       AA-平台-济南
    alias           16.198.64.4
 }
ls host* | xargs cat | grep -E  "[0-9] + .[0-9] +.[0-9] +.[0-9]+" | awk '{print $2}' | uniq | wc -l

1.xargs 命令适用于管道命令不能使用的情况,本例中xargs命令将前面的输出作为cat的命令行参数。

2.grep -E "[0-9] + .[0-9] +.[0-9] +.[0-9]+",查找含有ip格式的字符串

3.awk '{print $2}',只打印输出一行记录的第二个被分割的域。即  address         16.198.64.4 这行数据的 16.198.64.4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值