四剑客之awk和sed

day018+四剑客之awk和sed

  • awk
    • 取行
      • 案例01: 取出/etc/passwd第3行
        • awk ‘NR>=3’  /etc/passwd
      • 案例02: 取出/etc/passwd 第3到10行
        • awk ‘NR>=3  && NR<=10’ /etc/passwd
      • 案例03: 取出/etc/passwd中包含bash的行
        • grep ‘bash’ /etc/passwd
        • awk ‘/bash/’  /etc/passwd
        • sed -n ‘/bash/p’  /etc/passwd
      • 案例04:取出日志中指定时间段内的日志
        • 取出时间范围日志
          • 检查是否有11号的15:00 16:00的日志
            • grep ’11 15:00′ secure-20161219 |wc -l
            • grep ’11 16:00′ secure-20161219 |wc -l
          • sed  -n ‘/15:00:00/    ,       /16:00:00/p’   secure-20161219    |wc -l
          • sed -n ‘/15:00:00/    ,       /16:00:00/p’    secure-20161219      >secue-
            15-16
          • sed -n ‘/22.Nov.2015:11:30:00/    ,    /22.Nov.2015:11:31:00/p’ access.log  |wc -l   
          • sed -n ‘[/22\/Nov\/2015:11:30/  ,  /\[22\/Nov\/2015:11:31:00/p’  access.log   |wc -l
          • awk ‘$4>=”[22\/Nov\/2015:11:11:13]”‘  ~/access.log
            • 过滤时间段
          • awk ‘/04:10:00/ , /04:11:00/’ ~/secure-20161219 |less
            • 过滤时间段四点十分到四点十一分的时间
        • 取列
          • awk -F 可以指定分隔符.
            • 案例07: 取出/etc/passwd第1列第3列和最后一列
              • awk -F :   ‘{print $1,$3,$NF}’  /etc/passwd |column -t
            • 案例08: 取出ip a s ens33 中的ip地址
              • ip a s ens33 |awk ‘NR==3’ |awk -F ‘[ /]+’ ‘{print $3}’
              • ip a s ens33 |awk ‘NR==3’ |awk -F ‘inet |/24’ ‘{print $2}’
            • 案例09: 显示/etc/passwd每一行的内容与行号
              • less -N
              • cat -n 
              • awk ‘{print NR ,$0}’
            • 案例10: 案例08合并成1个awk,使用1个管道
              • ip a s ens33 |awk ‘NR==3’ |awk -F ‘[ /]+’ ‘{print $3}’
              • ip a s ens33 |awk -F ‘[ /]+’ ‘NR==3{print $3}’
        • awk计算与统计
          • 统计数量
            • awk ‘{i=i+1} END{print i} ‘ /etc/services
            • wc -l
          • 计算
            • 案例12:统计seq 10结果的总和
              • seq 10 |awk  ‘{i=i+$1}   END{print i}’  
            • access.log是访问日志,日志的第10列,是用户访问的资源的大小,对大小求
              和,形式以MB或GB形式展示
              • awk ‘{i=i+$10} END{print i}’
              • 按照GB显示  awk ‘{i=i+$10} END{print i/1024^3″GB”}’ access.log
            • 案例13:统计free结果中内存空闲率
              • free -m |awk ‘NR==2{print $NF/$2*100″%”}’
  • sed
    • sed(查找输出)
        • 案例01:根据行号进行过滤
          • sed -n ‘3p’  /etc/passwd
            • -n 取消sed命令的默认输出
              p输出print
      • 案例02:根据行号范围进行过滤
        • sed -n ‘3,9p’  /etc/passwd
          • 输出三到九行
        • sed -n ‘3,$p’  /etc/passwd
          • 到最后一行
      • 案例03: 类似于grep/egrep进行过滤
        • sed  -n ‘/root/p’  /etc/passwd
        • sed -nr ‘/root|oldboy/p’  /etc/passwd
          • 使用正则过滤两个需要加-r (-nr)
      • 案例04: 取出文件中某个范围的内容
        • sed -n  ‘/1/ , /5/p’  /num.txt
        • sed -n ‘/^5/ , /^15/p’ num.txt
          • 精确匹配数字–5
        • sed -n ‘/01:00:00/  ,  /02:00:00/p’   secure-20161219
        • sed -n ‘/16 11:00:00/,/16 11:10:00/p’ secure-20161219 |wc -l
          • 统计数量
        • sed -n ‘/16 11:00:00/,/16 11:10:00/p’ secure-20161219 |grep -i
          ‘failed password’ |wc -l
          • 统计失败的次数
    • sed (查找替换)
      • 案例05: 把文件中的oldboy替换为lidao
        • 格式:sed  ‘s###g’
          • sed ‘s#oldboy#lidao#g’  sed.txt
            • 全部替换
          • sed ‘s#oldboy#lidao#’  sed.txt
            • 替换第一个(无g)
        • sed -i 备份文件
          • sed -i.bak  ‘s#oldboy#lidao#g’  sed.txt
            • 会备份出sed.txt.bak的文件
        • sed 中-n和-i不能一起用
          • sed -in  ‘s@#Port 22@Port 52113@g’ sshd_config
            • 导致文件内容清空
      • 案例06: 复制/etc/passwd到当前目录,把passwd文
        件的第1列和最后一列调换位置
        • 简单例子
          • echo 123456 |sed -r ‘s#(..)(..)(..)#\3\2\1#g’
        • sed ‘s#(.*)(:x.*:)(.*)#\3\2\1#g’ passwd
      • 替换时间
        • sed -r ‘s#([0-9]{2})(…)([0-9]{4}):(.*)#\3-\2-\1 \4#’
    • sed 删除
      • sed ‘3d’ num.txt
        • 删除第三行
      • sed ‘/^1/d’ num.txt
        • 删除以数字1开头的行
        • c
          • 清空指定行,写入内容
        • a
          • 在指定行上面增加1行.
        • i
          • 清空指定行,然后写入内容.

评论

  1. 博主
    3 月前
    2024-11-06 9:32:55

    非常有用,谢谢博主

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇