码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux-文本处理三剑客


    linux文本处理三剑客grep,sed,awk

    文章目录

      • grep
      • grep -m num
      • grep -v
      • grep -n
      • grep -c
      • grep -o
      • grep -q
      • grep -A num
      • grep -e
      • grep -f file
      • grep -r
      • grep -R
      • 基本正则表达式
      • . 点匹配任意单个字符
      • [ ] 匹配指定范围
      • * 匹配前面字符任意次数,包括0次,贪婪模式:尽可能长的匹配
      • .* 点星匹配所有
      • \? 匹配其前面的字符出现0次或1次,即:可有可无
      • \+ 匹配其前面的字符出现最少1次,即肯定有且 >=1次
      • \{n\} 匹配前面的字符n次
      • \{m,n\} 匹配前面的字符至少m次,至多n次
      • 使用正则表达式找出主机的IP地址
      • 位置锚定
        • ^ 行首锚定,用于模式的最左侧
        • $ 尾行锚定,用于模式的最右侧
        • \< 词首锚定,用于单词模式的左侧

    grep

    grep是英语Global Regular Expression Print的首字母缩写。用于对文本内容进行过滤、抓取、分析。比如我现在工作中使用最多的就是通过grep抓取到tomcat和java的进程,以便于通过相关的进程Id关停相关的服务。

    ps -ef|grep tomcat
    ps -ef|grep java
    
    • 1
    • 2

    在这里插入图片描述
    可见,通过grep抓取到的tomcat相关字样被红色高亮显示。

    练习:只显示/etc/passwd目录下lei用户的用户信息

    grep bash /etc/passwd |grep lei
    
    • 1

    在这里插入图片描述
    常见选项
    在这里插入图片描述
    以上截图是截取部分帮助手册(grep --help)的对grep 常见参数的解释

    grep -m num

    #匹配到3次后停止
    -m, --max-count=NUM       stop after NUM selected lines
    grep -m 3 pattern path
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    grep -v

    #显示不被pattern匹配到的行,就是取反
    -v, --invert-match       select non-matching lines(反转匹配选择非匹配行)
    grep -v “#” xxxx
    
    • 1
    • 2
    • 3

    应用:不想看/etc/fstab文本中被“#”注释掉的行
    在这里插入图片描述
    在这里插入图片描述

    grep -n

    显示匹配的行号
    -n, --line-number         print line number with output lines
    
    • 1
    • 2

    在这里插入图片描述

    grep -c

    统计匹配的行数

    #每个文件只打印选定行数
    -c, --count               print only a count of selected lines per FILE
    
    • 1
    • 2

    在这里插入图片描述
    应用:想知道当前的cpu有几核
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    思路:统计processor出现的次数

    [root@rocky8 ~]# grep -c processor /proc/cpuinfo
    
    • 1

    在这里插入图片描述

    grep -o

    仅显示匹配到的字符串

    -o, --only-matching       show only the part of a line matching PATTERN
    
    • 1

    在这里插入图片描述

    grep -q

    静默模式,不输出任何信息。
    这个模式有什么用?
    他的作用是会让系统一个只发生改变 ? 是 0 ,还是 1 。根据 ?是0,还是1。根据 ?是0,还是1。根据?的值判断某个东西是否找到了(只关心找不找得到,不关心找到的是什么)

    -q, --quiet, --silent     suppress all normal output
    
    • 1

    在这里插入图片描述

    grep -A num

    -A after ,后num行
    -B before, 前num行
    -C context,前后各num行

    -A, --after-context=NUM   print NUM lines of trailing context
    -B, --before-context=NUM  print NUM lines of leading context
    -C, --context=NUM         print NUM lines of output context
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    应用:想找的文本本身没有什么可寻的信息,但是它周边有可用信息,比如上图的bash。通过 bash就能定位到他周边的信息。(走丢了,朋友问你在哪,你说在肯德基旁,朋友找到肯德基就找到你了。)

    grep -e

    实现多个选项间的逻辑or关系

    -e, --regexp=PATTERN      use PATTERN for matching
    
    • 1

    在这里插入图片描述

    grep -f file

    根据模式文件处理
    就相当于取两个文本内容的共有部分。

    -f, --file=FILE           obtain PATTERN from FILE
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    grep -r

    递归目录,但不处理软链接

    -r, --recursive           like --directories=recurse
    
    • 1

    在这里插入图片描述

    grep -R

    递归目录,但处理软链接

    -R, --dereference-recursive   likewise, but follow all symlinks
    
    • 1

    基本正则表达式

    . 点匹配任意单个字符

    . 点匹配任意单个字符(除了\n),可以是一个汉字或其他国家的文字
    
    • 1

    在这里插入图片描述

    [ ] 匹配指定范围

    正则表达式需用双引号括起来

    [] 匹配指定范围内的任意单个字符,例如:[lei] [0-9] [a-z] [a-zA-z]
    
    • 1

    在这里插入图片描述

    * 匹配前面字符任意次数,包括0次,贪婪模式:尽可能长的匹配

    在这里插入图片描述

    .* 点星匹配所有

    在这里插入图片描述

    ? 匹配其前面的字符出现0次或1次,即:可有可无

    在这里插入图片描述
    应用: 看某个目录下的文件夹是否存在
    在这里插入图片描述

    + 匹配其前面的字符出现最少1次,即肯定有且 >=1次

    在这里插入图片描述

    {n} 匹配前面的字符n次

    在这里插入图片描述

    {m,n} 匹配前面的字符至少m次,至多n次

    使用正则表达式找出主机的IP地址

    在这里插入图片描述
    在这里插入图片描述
    使用正侧表达式找出ip地址

    ifconfig ens160 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' |head -n1
    
    • 1

    在这里插入图片描述
    思路:IP地址使用点分十进制的方式表示的:10.0.0.1等,则每个数字的取值范围是0~255。个位到百位最小一个数,最大三个数则表示为:每个数字的范围是[0-9],每个数字最少匹配一次最多匹配三次则使用{m,n}。则三个数字的范围为[0-9]{1,3},最终ip地址的四个数字则匹配为:[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

    位置锚定

    ^ 行首锚定,用于模式的最左侧

    在这里插入图片描述

    $ 尾行锚定,用于模式的最右侧

    < 词首锚定,用于单词模式的左侧

    在这里插入图片描述
    应用:排除以“#”开头的行和空行

    grep -v '^\(#\|$\)' /etc/profile
    
    • 1
  • 相关阅读:
    http和https分别是什么?
    【英语:基础高阶_经典外刊阅读】L5.解构阅读中段落—匹配类题目详解
    一篇文章带你入门软件测试
    mysql基础知识篇(一)
    【Javaweb项目实战】黑马旅游网
    java-php-python-ssm微视频管理系统设计计算机毕业设计
    住房贷款等额本息(等额本金)还款计划计算
    Fork/Join实战和原理分析
    2020CCPC 威海站 个人题解
    使用canvas给图片添加水印
  • 原文地址:https://blog.csdn.net/flytalei/article/details/127969560
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号