华人澳洲中文论坛

热图推荐

    linux命令之grep命令 – 弱小的文本搜寻工具

    [复制链接]

    2022-12-20 07:04:58 40 0

    grep来自于英文词组“global search regular expression and print out the line”的缩写,意思是用于片面搜寻的正则表白式,并将后果输入。人们通常会将grep命令与正则表白式搭配使用,参数作为搜寻过程当中的增补或对输入后果的筛选,命令模式非常灵敏。
    与之容易混杂的是egrep命令和fgrep命令。假如把grep命令当做是规范搜寻命令,那末egrep则是扩展搜寻命令,等价于“grep -E”命令,反对扩展的正则表白式。而fgrep则是疾速搜寻命令,等价于“grep -F”命令,不反对正则表白式,间接根据字符串内容进行婚配。
    语法格局:grep [参数] 文件
    罕用参数:
    -i
    疏忽大小写
    -c
    只输入婚配行的数量
    -l
    只列出合乎婚配的文件名,不列出详细的婚配行
    -n
    列出一切的婚配行,显示行号
    -h
    查问多文件时不显示文件名
    -s
    不显示不存在、没有婚配文本的过错信息
    -v
    显示不包孕婚配文本的一切行
    -w
    婚配整词
    婚配整行
    -r
    递归搜寻
    -q
    阻止输入任何后果,已退出形态表现搜寻是不是胜利
    -b
    打印婚配行距文件头部的偏移量,以字节为单位
    -o
    与-b结合使用,打印婚配的词据文件头部的偏移量,以字节为单位
    -F
    婚配固定字符串的内容
    -E
    反对扩展的正则表白式
    参考实例
    搜寻某个文件中,包孕某个症结词的内容:
    [root@linuxcool ~]# grep root /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:十一:0:operator:/root:/sbin/nologin
    搜寻某个文件中,以某个症结词结尾的内容:
    [root@linuxcool ~]# grep ^root /etc/passwdroot:x:0:0:root:/root:/bin/bash
    搜寻多个文件中,包孕某个症结词的内容:
    [root@linuxcool ~]# grep linuxprobe /etc/passwd /etc/shadow/etc/passwd:linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash/etc/shadow:linuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::
    搜寻多个文件中,包孕某个症结词的内容,不显示文件称号:
    [root@linuxcool ~]# grep -h linuxprobe /etc/passwd /etc/shadowlinuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bashlinuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::
    输入在某个文件中,包孕某个症结词行的数量:
    [root@linuxcool ~]# grep -c root /etc/passwd /etc/shadow/etc/passwd:2/etc/shadow:1
    搜寻某个文件中,包孕某个症结词地位的行号及内容:
    [root@linuxcool ~]# grep -n network anaconda-ks.cfg17:network --bootproto=static --device=ens160 --ip=192.168.10.10 --netmask=255.255.255.0 --onboot=off --ipv6=auto --activate18:network --hostname=linuxcool.com
    搜寻某个文件中,不包孕某个症结词的内容:
    [root@linuxcool ~]# grep -v nologin /etc/passwdroot:x:0:0:root:/root:/bin/bashsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltlinuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
    搜寻以后任务目录中,包孕某个症结词内容的文件,未找到则提醒:
    [root@linuxcool ~]# grep -l root *anaconda-ks.cfggrep: Desktop: Is a directorygrep: Documents: Is a directorygrep: Downloads: Is a directoryinitial-setup-ks.cfggrep: Music: Is a directorygrep: Pictures: Is a directorygrep: Public: Is a directorygrep: Templates: Is a directorygrep: Videos: Is a directory
    搜寻以后任务目录中,包孕某个症结词内容的文件,未找到不提醒:
    [root@linuxcool ~]# grep -sl root *anaconda-ks.cfginitial-setup-ks.cfg
    递归搜寻,不只搜寻指定目录,还搜寻其内子目录内是不是无关键词文件:
    [root@linuxcool ~]# grep -srl root /etc/etc/fstab/etc/X十一/xinit/Xclients/etc/X十一/xinit/xinitrc/etc/libreport/events.d/collect_dnf.conf/etc/libreport/events.d/bugzilla_anaconda_event.conf/etc/libreport/forbidden_words.conf………………省略部份输入信息………………
    搜寻某个文件中,精准婚配到某个症结词的内容(搜寻词应与整行内容彻底同样才会显示,有别于个别搜寻):
    [root@linuxcool ~]# grep -x cd anaconda-ks.cfg[root@linuxcool ~]# grep -x cdrom anaconda-ks.cfgcdrom
    判别某个文件中,是不是包孕某个症结词,经过前往形态值输入后果(0为包孕,1为不包孕),便利在Shell脚本中判别和调用:
    [root@linuxcool ~]# grep -q linuxprobe anaconda-ks.cfg[root@linuxcool ~]# echo $?0[root@linuxcool ~]# grep -q linuxcool anaconda-ks.cfg[root@linuxcool ~]# echo $?1
    搜寻某个文件中,空行的数量:
    [root@linuxcool ~]# grep -c ^$ anaconda-ks.cfg6

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题31

    帖子40

    积分189

    图文推荐