grep与正则,sed工具

耗尽温柔 提交于 2019-11-27 02:25:49

一、grep -A -B —color=auto ‘查找字符’ filename
  • -A后面可加数字,为after的意思,除了该行外,后续n行也列出来
  • -B后面可加数字,为befer的意思,除了该行外,前面的n行也列出来
  • -in 不论大小写,取得所查找的字符
  • .(小数点)代表一定有一个任意字符
  • *(星星号)代表重复前一个字符,0到无穷次
与通配符中的*意义不同,不能搞混
 
二、基础正则表达式字符集合
  • ^word     要查找的字符串在行首
  • word$     要查找的字符串在行尾
  • .              要一定有一个任意字符
  • \              转义符,将特殊符号的意义去除
  • *              重复0个到无穷个的前一个RE字符
  • [list]         字符集合的RE字符,里面列出想要选取的字符
  • [n1-n2]    字符集合的RE字符,里面列出想要选取的字符范围
  • [^list]       字符集合的RE字符,里面列出不要的字符范围
  • \{n,m\}    
    • 连续n到m个的前一个RE字符
    • 若为\{n\},则是连续n个的前一个RE字符
    • 若为\{n,\},则是连续n个以上的前一个RE字符
三、sed工具
sed 【-n e f r i 】【操作】
    选项参数
  • -n 使用安静模式,加上n后,则只有经过sed特殊处理的那一行才会被列出来
  • -e 直接在命令行模式上进行sed的操作编写
  • -f 直接将sed的操作写在一个文件内,-f filename则可以执行filename内的sed操作
  • -r sed的操作使用的是扩展型正则表达式的语法
  • -i 直接修改读取的文件内容,而不是由屏幕输出
    操作
  • [n1[,n2]] function   不一定存在n1,n2,为确定操作行数范围
            function包含下面这些:
    • a 新增,a的后面可以接字符,而这些字符会在新的一行出现(目前的下一行)
    • c 替换,c的后面可以接字符,这些字符可以替换n1,n2之间的行
    • d 删除,因为是删除,所以d后面不接任何东西
    • i 插入,i的后面可以接字符,而这些字符会在新的一行出现(目前的上一行)
    • p 打印,亦即将某个选择的数据打印出来,通常p会与参数sed -n一起运行
    • s 替换,可以直接进行替换的工作,通常这个s的操作可以搭配正则表达式
  • 新增多行的时候,需要在行末增加\
  • n1 /etc/passwd | sed -n ‘5,7p’   显示5-7行
  • sed ’s/要被替换的字符/新的字符/g'
    • ifconfig eth0 | grep ‘inet ‘ | sed ’s/^.*inet //g’   删除ip前后多余的字符
    • cat /etc/man_db.conf | grep 'MAN' | sed 's/#.*$//g' | sed '/^$/d’    包含MAN的,且不要含有#的注释,空白行也不要
四、扩展正则表达式
  • + 重复一个或一个以上的前一个RE字符
  • ?0个或1个的前一个RE字符
  • | 用或的方式找出数个字符串
  • ()找出群组字符串
  • ()+ 多个重复群组的判别
五、格式化打印
  • printf ‘%s\t  %s\t  %s\t  %s\t  %s\t  \n’  $(cat  printf.txt)     %s代表一个长度不固定的字符串
  • printf ‘%10s  %5i  %5i  %5i  %8.2f  \n’  $(cat  printf.txt)      %10s代表长度为10个字符的字符串字段,%5i代表长度为5个字符的数字字段,%8.2f则代表长度为8个字符的具有小数点的字段,其中小数点由两个字符宽度,小数点本身占一个字符宽度。
 
 
 
 
 
 
 
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!