ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux中grep、sed、awk使用

2022-03-02 23:02:26  阅读:177  来源: 互联网

标签:grep 匹配 html sed awk 内容 txt


1.管道

linux中使用|将两个命令隔开,|左边的输出作为|右侧命令的输入

eg:cat 1.txt|grep "xxxy"

2.正则表达式

正则是记录文本规则的代码

练习环境:https://tool.oschina.net/regex

常用的元字符
. 匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束
常用的限定符 *重复0次或者更多次 +重复一次或多次 ?重复0次或一次 {n}重复n次 {n,}重复n次或更多次 {n,m}重复n到m次
匹配以字母a开头的单词:\ba\w*\b
匹配6个字母的单词:\b\w{6}\b
匹配1个或更多连续的数字:\d+
匹配5-12位qq号:\d{5,12}
匹配只包含5-12位qq号:^\d{5,12}$

3.grep:根据用户指定的模式对目标文本进行过滤,显示被模式匹配到的行

grep options pattern file
option:    -v 显示不被pattern匹配到的行
            -i 忽略字符大小写
            -n 显示匹配的行号
            -c 统计匹配的行数
            -o 仅显示匹配到的字符串
            -E 使用ERE,相当于egrep,开启扩展(Extend)的正则表达式
           --color 将匹配到的内容以颜色高亮显示
           -A  n 显示匹配到的字符串所在的行及其后n行,after
           -B  n 显示匹配到的字符串所在的行及其前n行,before
           -C  n 显示匹配到的字符串所在的行及其前后各n行,context
              
              
              
查找文件内容包含html的行数 cat response.txt|grep -n html 、 grep -n html response.txt 
查找文件内容不包含html的行数 cat response.txt|grep -nv html
查找文件内容以h开头的行:grep -n ^h response.txt
查找文件内容以t结尾的行:grep -n t$ response.txt

 4.sed:是流编辑器,一次处理一行内容

行存储在模式空间-sed命令处理-进入屏幕-清空模式空间,源文件不会被改变

sed [-hnV][-e<script>][-f<script FILE>][FILE]
      -h  显示帮助,man sed(j向下翻页,k向上翻页,/内容  去查找,N上一个,n下一个)
      -n  仅显示script处理后的结果
      -e<script>以选项中指定的script来处理输入的文本文件
      -f<script>以选项中指定的script来处理输入的文本文件

      -e后的常用动作:
      a 新增,sed -e '4 a newline'   在第4行后新增一行
      c 取代,sed -e '2,5c No 2-5 number'  c后面的东西取代2-5行内容
      d 删除,sed -e '2,5d' 删除2-5行的内容
      i  插入,sed -e '2i newline' 在第2行前插入一行
      p 打印,sed -n '/root/p' 打印匹配到的/root/---/正则表达式/
      s 取代,sed -e 's/old/new/g'  全局修改/new/取代/old/ ,不加g时表示只修改每行第一个匹配到的值
        

        -i直接修改文件内容:sed -i '2i newline' file

5.awk:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理

把行作为输入,并赋值给$0 ,将行切断,从$1开始,对行匹配正则/执行动作-打印内容,读入第二行循环前面几步的动作
awk 'pattern + action' [FILE]
-pattern 正则表达式
-action 对匹配到的内容执行的命令(默认为输出每行内容)

常用参数
FILE awk浏览的文件名
BEGIN 处理文件之前要执行的操作
END 处理文件之后要执行的操作
FS 设置输入域分隔符,等价于命令行-F选项
NF 浏览记录的域的个数(列数)
NR 已读的记录数(行数)
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0 整体记录
$1 表示当前行的第一个域,以此类推

搜素/etc/passwd有root关键字的所有行,并显示对应的shell
  

 

标签:grep,匹配,html,sed,awk,内容,txt
来源: https://www.cnblogs.com/erie/p/15943286.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有