linux sed命令 awk命令 xargs命令

一、sed命令

  1. 动作说明

    符号意义示例
    a新增#在testfile文件的第四行后添加一行,并将结果输出到标准输出
    sed -e 4a\newLine testfile
    c取代#将第2-5行的内容取代成为『No 2-5 number』呢?
    nl /etc/passwd | sed '2,5c No 2-5 number'
    d删除#删除/etc/passwd所有包含root的行,其他行输出
    nl /etc/passwd | sed '/root/d'
    i插入
    p打印显示/etc/passwd 文件内的第 5-7 行
    nl /etc/passwd | sed -n '5,7p'
    s取代sed 's/要被取代的字串/新的字串/g’
    删除eth0下包含inet字符串的inet显示
    /sbin/ifconfig eth0 | grep 'inet' | sed 's/inet//g'
  2. 直接修改文件内容(危险动作) (参数-i)
    sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

    #将 regular_express.txt 内每一行结尾若为 . 则换成 !
    sed -i 's/\.$/\!/g' regular_express.txt 
    #利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:
    sed -i '$a # This is a test' regular_express.txt
    

二、awk命令

对输出值按列操作,以下是例子

  1. 分析日志
    # 查看访问网站最多的两个ip地址
    awk '{print $1}' /data/logs/work.log|sort|uniq -c|sort -nr| head -2
    # 查看访问网站最少的两个ip地址 (uniq是去除连续出现的重复值,所以之前要用sort排序)
    awk '{print $1}' /data/logs/work.log|sort|uniq -c|sort -nr| tail -2
    
  2. 处理结果
    ls -l |awk '{print $9}' | xargs wc -l  # 查看每一个文件的行数
    
  3. 统计日志平均响应时间
    获取前三条记录
    # 本例中文件以空格分割 第10列是响应时间 获取前三条记录
    cat access.log | grep 200 | awk '{if($10>=0){print $10}}' | head -3
    # 结果
    # 612
    # 42
    # 42
    
    取前三条记录平均值
    # 取前三条记录的平均响应时间  FN为当前总列数
    cat access.log | grep 200 | awk '{if($10>=0){print $10}}' | head -3 | awk '{S+=$FN;++F}END{print F,S,"\t"S/F}'
    # 结果:
    # 3 696 	232
    
    取每个时间的次数占比
    cat access.log | grep 200 | awk '{if($10>=0){print $10}}' | head -3 | awk '{++T;;++F[$1]}END{for(i in F) print i, F[i]/T}'
    # 结果
    # 612 0.333333
    # 42 0.666667
    

三、xargs命令

  1. 批量杀死包含“bin/php”的进程
    ps -ef | grep bin/php | grep -v grep |awk '{print $2}' | xargs kill -15
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值