• 读书笔记--find、sed、awk工具的使用


    最近在写shell脚本,主要工作就是解析配置文件,那么学习sed与awk就在所难免了,另外还系统的看了find命令的使用,现在就将这些成果汇总起来,以便今后参考:

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

    第一部分:find

      1)name选项

      find ~ -name “*.txt” –print

      find . –name “[A-Z]*” –print

      2)perm选项

      find . –perm 755 -print

      3)按更改时间查找

      find / -mtime -5 –print     //更改时间在五日以内

      find / -mtime +3 –print    //更改时间在三日之前

      4)type选项

      find /etc –type d –print    //查找/etc目录下所有的目录

      find /etc –type l –print     //查找/etc目录下所有的符号链接文件

      5)使用exec或ok

      find . –type f –exec ls –l {} ; //注意{}和;之间有空格

      find . -name “*.log” –mtime +5 -exec rm {} ;

    第二部分:sed

      sed是非交互文本流编辑器,使用sed可以从文件和字符串中抽取所需信息。

      1)打印范围

      sed –n ‘1,3p’ sed.txt > sed.tmp

      sed –n ‘1,$p’ sed.txt > sed.tmp

      2)模式查询

      sed –n ‘/should/p’ sed.txt //查找should的行

      sed –n ‘/should/=’ sed.txt //输出匹配的行号

      3)特殊字符查询

      sed –n ‘/./’p sed.txt        //查找有.的行

      4)删除文本

      sed ‘1,3d’ sed.txt

      sed ‘/should/d’ sed.txt

      5)替换文本

      sed ‘s/PS/ps/’ sed.txt       //替换每行第一个匹配

      sed ‘s/PS/ps/g’ sed.txt           //全文替换

      sed ‘1,3 s/should/SHOULD/g’ sed.txt         //指定范围替换

      sed ‘1 s/should/SHOULD/g’ sed.txt      //指定行替换

      6)sed脚本文件

      I)含sed命令的脚本

      $cat append.sed

      #!/bin/sed –f

      /should/ a

      Just a test.

      $chmod +x append.sed

      $./append.sed sed.txt

      II)不含sed命令脚本

      $cat append.sed

      /should/ a

      Just a test.

      $chmod +x append.sed

      $sed –f append.sed sed.txt

    第三部分:awk

          awk 是一种编程语言,对文本和数据进行处理,支持正则表达式,突出特点是对文本列的操作。

      1)常见操作

      awk ‘{print $1,$3}’ tmp.txt

      awk –F ‘:’ ‘{print $1”|”$3}’ tmp.txt  //以冒号作为域分割符并且输出的分割符为|

      2)打印记录

      awk ‘BEGIN {print “Begin   -----------------”}

      {print $0}’ tmp.txt //打印头

      awk ‘BEGIN {print “Begin   -----------------”}

      {print $0}

      END {print” ----------------- End”}’ tmp.txt    //打印头尾

      3)条件运算符

      awk ‘{if ($1~/tomy/) print $0}’ tmp.txt //匹配文本域1为tomy的记录

      awk ‘$2==”30” {print $1,”age is 30.”}’ tmp.txt   //精确匹配

      4)利用正则表达式

      awk ‘/[Gg]reen/’ tmp.txt    //匹配Green或者green

      awk ‘$4~/[Gg]reen/’ tmp.txt

      awk ‘$4~/([Gg]reen|[Rr]ed)/’ tmp.txt    //或关系匹配

      5)使用内置变量

      awk ‘{print NF,NR,$0}

      END {print FILENAME}’ tmp.txt //NF为列数,NR为行号

      6)使用内置字符串函数

      awk ‘gsub (/30/,thirty) {print $0}’ tmp.txt    //把有30的行中的30改为thirty

      awk ‘BEGIN {print split(“123#456#789”,m_array,”#”)}’  //split返回数组m_array的下标数3,m_array取值:m_array[1]为123,m_array[2]为456,m_array[3]为789

      7)输出函数printf

      awk ‘{printf “%-10s---%s ”,$1,$3}’ tmp.txt      //类似C语言printf函数

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

  • 相关阅读:
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    COS Javascript 上传图片putObject成功后没有返回ETag?
    模拟一个在线音乐播放程序(socket + 数据库)
    python 基础(while 循环、格式化输出、运算符、编码初识)
  • 原文地址:https://www.cnblogs.com/yangtze736-2013-3-6/p/3150580.html
Copyright © 2020-2023  润新知