首页 > 技术文章 > linux入门实验手册6 文本处理与正则表达式

linux521 2019-05-21 17:41 原文

  1. tail -f失效分析

    vim是将原来的文件删除后,然后再生成一个新的文件,而tail -f命令是根据文件的inode来追踪文件的,vim把原来的文件删除,新生成的同名文件的inode已经发生了变化,所以导致tail -f命令失效。
    而使用echo " " >> 来追加不会令tail -f命令失效
    或者使用tail -F替代tail -f

  2. 找出ifconfig命令结果中所有IPv4地址
[root@Magedu ~]# ifconfig ens33|grep -o "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"  //1到三个数字加点重复三次,然后再来1到三个数字
172.18.118.155
255.255.0.0
172.18.255.255
  1. echo welcome to china|grep -o "."

    grep -o "." 可以达到竖排显示的目的

  2. 查出/tmp的权限,以数字⽅式显⽰(先用stat命令查看权限,然后再根据特点来匹配)

    [root@magedu ~]# stat /tmp |head -n4|tail -n1 |cut -d"/" -f1|cut -d"(" -f2
    [root@magedu ~]# stat /tmp|head -n4|tail -1|cut -d: -f2|tr -dc "[:digit:]\n"

  3. 统计当前连接本机的每个远程主机IP的连接数,并按从⼤到⼩排序

    netstat -tun|grep ESTAB|tr -s " " : |cut -d: -f6|sort -nr|uniq -c 最后先排序sort 后去重 uniq

  4. 显⽰/proc/meminfo⽂件中以⼤⼩s开头的⾏(要求:使⽤两种⽅法)

    [root@magedu ~]# egrep [1].* /proc/meminfo 此处用grep和egrep一样
    [root@magedu ~]# grep -i ^s.* /proc/meminfo

  5. 显⽰CentOS7的/etc/grub2.cfg⽂件中,⾄少以⼀个空⽩字符开头的且后⾯有⾮空⽩字符的⾏(且后面有就是紧接着的意思)

    cat /etc/grub2.cfg|grep "[[:space:]].*[[:space:]]" 错 至少一个 +
    egrep [[:space:]]+[[:space:]].*$ /etc/grub2.cfg

  6. 找出“netstat -tan” 命令结果中以LISTEN后跟任意多个空⽩字符结尾的⾏

    netstat -tan|egrep LISTEN[[:space:]]+$ 错 注意加不加双引号以及listen前面有无字符的的区别,另外,egrep就不用+了
    netstat -tan |egrep ".*LISTEN[[:space:]]+$" 对

  7. 显⽰CentOS7上所有系统⽤户的⽤户名和UID

    cat /etc/passwd|grep nologin|cut -d: -f1,3 错,centos7系统用户的定义应该是ID从0-999,而不是nologin
    cut -d: -f1,3 passwd |egrep "\b[0-9]{1,3}\b" 对

  8. 找 出/etc/passwd⽤户名和shell同名的⾏

    grep -E "([:]+):.*<\1$" /etc/passwd 用户名首先行首^,然后非冒号的几个字符,分个组便于后续引用,再加冒号,注意引用后的词首锚定

  9. 显⽰三个⽤户root、 mage、 wang的UID和默认shell

    grep -e root -e "\bjack\b" -e "\bwang\b" /etc/passwd|cut -d: -f3,7
    egrep "^(root|mage|wang)" /etc/passwd|cut -d: -f1,3,7 不完全正确?因为要注意词首词尾锚定

  10. 找出/etc/rc.d/init.d/functions⽂件中⾏⾸为某单词(包括下划线)后⾯跟⼀个⼩括号的⾏

    grep -E "[2]+()" /etc/rc.d/init.d/functions 注意小括号是要完整的,另外要用\转义;单词开头,所以要用字母,而不是.*任意字符


  1. sS ↩︎

  2. [:alpha:]_ ↩︎

推荐阅读