zoukankan      html  css  js  c++  java
  • egrep及文本处理工具

    • egrep
      • 支持扩展正则表达式
      • 使用方式和选项和grep一样
    • 扩展正则表达式的元字符
      • 字符匹配
      • 次数匹配
      • 位置锚定
      • 分组或匹配
      • 注:以上元字符和grep一样,但是转义字符“”都没有了,除了:<,,>,1以外
      • 或:匹配整个左边或者整个右边
        • a|b:匹配a或者b
        • C|cat:匹配C或者cat
        • (C|c)at:匹配Cat或者cat

    练习:

    1,找出/proc/meminfo文件中,所有大写或小写s开头的行,至少三种方式

    答案:

    1. grep -i "^s" /proc/meminfo
    2. grep "^[sS]" /proc/meminfo
    3. grep -E "^(s|S)"

    2,显示当前系统上,root,centos和user1用户的默认shell

    答案:grep -E "^(root|centos|user1)>" /etc/passwd

    3,找出/etc/rc.d/init.d/functions文件中某个单词后面跟一个小括号的行

    答案:grep -E "[_[:alnum:]]+()" /etc/rc.d/init.d/functions。注:这里括号前面加“”表示括号本身。如果不加“_”,会把“_”左右当成两个单词。

    4,使用echo命令输出一个绝对路径,使用egrep取出基名

    答案:echo "/etc/sysconfig" | egrep -o "[^/]+/?$"

    进一步,取出路径名,同dirname命令的结果:

    答案:

    5,找出ifconfig命令结果中1-255之间的数值

    答案:ifconfig | grep -E -o "<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])>"

    6,找出ifconfig命令结果中的IP地址

    答案:网上查

    7,添加用户bash,testbash,basher以及nologin(其shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行

    答案:

    useradd bash

    useradd testbash

    useradd basher

    useradd -s /sbin/nologin nologin

    grep -E "^([^:]+>).*1$" /etc/passwd

    • fgrep:不支持正则表达式元字符,f代表fast
    • 文本查看及处理工具
      • wc:word count/统计文件中的行数,单词数,字节数
        • wc [OPTIONS]... [FILE]...
        • -l:只显示行数
        • -w:只显示单词数
        • -c:只显示字节数
      • cut:文本截取工具
        • -d CHAR:指定分隔符,默认为空格;-d和CHAR之间可以没有空格
        • -f:指定挑选出的字段/列
          • -f #:单个字段
          • -f #-#:连续字段
          • -f #,#:离散字段
          • -f 1,3-5,7:1,3,4,5,7字段
      • sort:排序工具
        • 类似工具都不会改变原文件内容,只是将结果输出
        • -t CHAR:指定分隔符
        • -k #:用于排序比较的字段
        • -n:根据数值大小进行排序,2在10前面,否则10在2前面
        • 基于UID对/etc/passwd中的行进行排序:cut -d: -f3 /etc/passwd | sort -n,但是这样截取之后,就不是原文件内容了,只显示第三列,所以应该sort -t: -k3 -n /etc/passwd
        • -r:逆序排序
        • -f:忽略字符大小写
        • -u:重复的行只保留一份
        • 综合:cut -d: -f7 /etc/passwd|sort -u|wc -l,显示所有用户的默认shell总共有多少种
      • uniq:报告或移除重复的行
        • -c:显示每一行出现的次数
        • -u:只显示没有重复过的行
        • -d:只显示重复过的行
      • diff:逐行比较文件的不同之处
        • -u:使用unified机制,即显示要修改的行的上下文,默认为上下各3行
        • diff OldFile NewFile > PatchFile
      • patch:向文件打补丁
        • patch [OPTIONS] -i PatchFile OldFile
        • patch [OPTIONS] OldFile < PatchFile

    练习:取出ifconfig eno16777736命令结果中的IP地址

  • 相关阅读:
    一步一步教你认识闭包
    爬虫入门系列(三):用 requests 构建知乎 API
    爬虫入门系列(二):优雅的HTTP库requests
    爬虫入门系列(一):快速理解HTTP协议
    Python中参数是传值,还是传引用?
    切图及效果图管理
    在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】
    hybrid开发设计
    Gson解析数组多类型元素
    eclipse项目迁移到android studio(图文最新版)
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7635672.html
Copyright © 2011-2022 走看看