• Linux学习笔记四 grep, sed, awk


    正则表达式
      grep
      grep '^[a-z]' passwd "^string" ^是搜索以该字符串开头行
      grep '.$' passwd .是任意一个字符
      grep '.$' passwd $是搜索以.结尾的行 对句号进行转义
      grep '!$' passwd $是搜索以该字符串结尾的行
      grep 'g..d' passwd 拥有g开头d结尾的词的行
      grep 'goo*d' passwd *重复前边字符0次或者多次 good gooood 都可以匹配出来 若是goo* 则可以匹配到go goo gooo
      grep '[^a-z]$' passwd 不是以小写字母结尾的行
      grep 'go{2}g' passwd {n} 查找斜杠前重复n次的单词 google
      grep 'go{2,5}g' passwd {n,m} 查找斜杠前重复n-m次次的单词 google goooogle
      grep 'go{2,}g' passwd {n,} 查找斜杠前重复n次及n次以上的单词 google goooogle
      ctrl + l 清屏

      echo $? 输出一个整数 如果为0意思是上一个命令执行成功 若果非零则没有执行成功
      echo $$ 显示当前shell的进程号
      sed
      sed -n '/t[ae]st/p' passwd 查找test 和 tast 的行
      sed -n '/test/p' passwd 查找test的行
      sed -n '/test/q' passwd 查找到test的第一行就退出只匹配一次
      sed -n '/test/g' passwd 查找到test的行用空行代替
      sed -n '/test/G' passwd 查找到test的行的下面添加一个空行
      sed -n '/^[a-z]/p' passwd 搜索以小写字母开头行
      sed -n '/!$/p' passwd 搜索以!结尾行
      sed -n '/g..d/p' passwd 搜索含有g**d的行
      cat -a passwd | sed '2a 第二行后面插入'
      cat -a passwd | sed '2i 第二行前面插入'
      cat -a passwd | sed '/good/ a Hello append' 在匹配到的good下面行添加该内容
      cat -a passwd | sed '/good/ i Hello insert' 在匹配到的good上面行添加该内容
      cat -a passwd | sed '2,3c 该插入行将2,3行替换'
      cat -a passwd | sed '2,4d' 将2,3,4行删除
      cat -a passwd | sed -n'2,4p' 选择显示2-4行
      cat -a passwd | sed 's/is/IS/g' 将is 替换成IS g全局替换 s进行替换操作
      管道符之前是为了显示行号
      sed 操作不会使得原文件改变如果想保存就是用文档流重定向保存到新文件即可

    创建sed脚本
      vi test.sed
      #! bin/sed -f
      XXXXXXXXXXXXXXX
    执行sed脚本
      添加执行权限 chmod u+x test.sed
      ./test.sed filename : ./指的是当前目录下的sed脚本

    awk
      awk 'BEGIN{print "========"} {print $0} END{print "======"; print FS,NR,NF,$NF}' passwd
      NR 记录的行数
      NF 域的个数
      动作模式都位于单引号之内
      命令内部所有双引号成对出现
      大括号括起动作语句 圆括号括起条件语句
      awk内置参数 域标记为$1$2$3$4 $0为行信息 $NF 第NF个域 FILENAME 文件名
      默认空格是区分域123的字符 但是可以指定BEGIN{FS=":"}现在就是指定以:为分隔符进行区分域
      元字符 ^ $ . [] | * + ?
      条件操作符 < > <= == !=
      规则就是把grep sed 要匹配的规则放入awk 中的/规则/中就可以执行形同的操作
      awk '{if($0~/good/) print $0}' passwd ~匹配正则 !~不匹配正则 (匹配到含有good的行就输出)美元符号前用于转义
      awk '{if{$0~/[ABC]/) print $0}' passwd 匹配含有大写字母A B C 的行
      awk '{if{$0~/^[^A-Za-z]/) print $0}' passwd 匹配开头字符不是以大小写字母开头的行
      awk '{if($5==1024) print $0}' passwd | cat -n 第五个域等于1024的显示出来并且显示行号
      awk '{if($5==1024 && $6~/good/) print $0}' passwd | cat -n 第五个域等于1024并且第6个域含有good的显示出来并且显示行号
      awk 'BEGIN{a = 0; a += 1;print a}'

  • 相关阅读:
    between and 相关
    SQL获取所有用户名,数据库名、所有表名、所有字段名及字段类型
    性能优化探讨与分析:
    设置自动收缩数据库
    服务器注册
    多表查询及区别
    sql孤立用户解决方法
    委托、事件、观察者模式
    非托管资源
    C# 预处理器指令
  • 原文地址:https://www.cnblogs.com/wlc297984368/p/7647090.html
Copyright © 2020-2023  润新知