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地址

原文地址:https://www.cnblogs.com/jacky1982/p/7635672.html