资讯专栏INFORMATION COLUMN

nginx

andycall / 2732人阅读

摘要:文本处理工具文本处理三剑客文本过滤工具基本正则表达式,流编辑器文本编辑工具上的实现为,文本报告生成器,格式化文本正则表达式由一类特殊字符及文本字符所编写的模式类别基本正则表达式扩展正则表达式作用文本搜索工具,根据用户指定的模式过滤条件对目标

Command grep 文本处理工具

Linux文本处理三剑客

grep:文本过滤工具(pattern)
    grep:基本正则表达式
sed:stream editor,流编辑器:文本编辑工具
gawk:Linux上的实现为gawk,文本报告生成器,格式化文本
    

正则表达式:

Regular Expression    REGEXP
    由一类特殊字符及文本字符所编写的模式
    类别:
        基本正则表达式:BRE
        扩展正则表达式:ERE
grep:Global search REgular expression and Print out the line

作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行;
模式:由正则表达式的元字符及文本字符所编写出的过滤条件;
格式:

grep  [OPTIONS]  PATTERN  [FILE...]
grep  [OPTIONS]  [-e PATTERN | -f FILE]  [FILE...]

OPTIONS:

--color=auto:对匹配到的文本着色后高亮显示;
-i:ignorecase,忽略字符的大小写;
-o:仅显示匹配到的字符串本身;即不会显示匹配到的字符串所在的行
-v, --invert-match:显示不能被模式匹配到的行;
-E:支持使用扩展的正则表达式元字符;
-q, --quiet, --silent:静默模式,即不输出任何信息;

-A #:after, 后#行
-B #:before,前#行
-C #:context,前后各#行
正则表达式 基本正则表达式元字符

字符匹配:

. :匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
[^]:匹配指定范围外的任意单个字符;
    [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
    

匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;默认工作于贪婪模式;

*:匹配其前面的字符任意次;0,1,多次;
    例如:grep "x+y"
        abxy
        aby
        xxxxxy
        yab
.*:匹配任意长度的任意字符
?:匹配其前面的字符0次或1次;即其前面的字符是可有可无的;
+:匹配其前面的字符1次或多次;即其面的字符要出现至少1次;
{m}:匹配其前面的字符m次;
{m,n}:匹配其前面的字符至少m次,至多n次;
    {0,n}:至多n次
    {m,}:至少m次

位置锚定:

^:行首锚定;用于模式的最左侧;
$:行尾锚定;用于模式的最右侧;
^PATTERN$:用于PATTERN来匹配整行;
    ^$:空白行;
    ^[[:space:]]*$:空行或包含空白字符的行;

单词:非特殊字符组成的连续字符(字符串)都称为单词;

< 或 :词首锚定,用于单词模式的左侧;
> 或 :词尾锚定,用于单词模式的右侧;
:匹配完整单词;

分组及引用

():将一个或多个字符捆绑在一起,当作一个整体进行处理;
    (xy)*ab

    后向引用:引用前面的分组括号中的模式所匹配到的字符;    
Note:分组括号中的模式匹配 到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
    1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
    2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
    3
    ...

或者

|
            He loves his lover.
            He likes his lover.
            She likes her liker.
            She loves her liker.

试验

1、显示/etc/passwd文件中不以/bin/bash结尾的行;
    grep  -v "/bin/bash"/bin/bash
2、找出/etc/passwd文件中的两位数或三位数;
    grep "<[0-9]{2,3}>" /etc/passwd
3、找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面非空白字符的行;
    grep "^[[:space:]]+[^[:space:]]"
4、找出"netstat -tan"命令的结果中以"LISTEN"后跟0、1或多个空白字符结尾的行;
    ~]# netstat -tan | grep  "LISTEN[[:space:]]*$"


扩展正则表达式 egrep:extended grep

支持扩展的正则表达式实现类似于grep文本过滤功能;相当于grep -E
格式:egrep [OPTIONS] PATTERN [FILE...]

选项:

-i, -o, -v, -q, -A, -B, -C
-G:支持基本正则表达式
    

扩展正则表达式的元字符:

字符匹配:
    .:任意单个字符
    []:指定范围内的任意单个字符
    [^]:指定范围外的任意单个字符
        
次数匹配:
    *:任意次,0,1或多次;
    ?:0次或1次,其前的字符是可有可无的;
    +:其前字符至少1次;
    {m}:其前的字符m次;
    {m,n}:至少m次,至多n次; 
        {0,n}
        {m,}
位置锚定
    ^:行首锚定;
    $:行尾锚定;
    <, :词首锚定;
    >, :词尾锚定;
分组及引用:
    ():分组;括号内的模式匹配到的字符会被记录于正则表达式引擎的内部变量中;
    后向引用:1, 2, ...
或:
    a|b:a或者b;
        C|cat:C或cat
        (c|C)at:cat或Cat
                    
    

试验

1、找出/proc/meminfo文件中,所有以大写或小写S开头的行;至少有三种实现方式;
    grep "^[Ss]" /proc/meminfo
    grep "^[Ss].*$" /proc/meminfo
    grep "^<[Ss].*>.*" /proc/meminfo
    grep -i "^s" /proc/meminfo
    grep -E "^(s|S)" /proc/meminfo
2、显示肖前系统上root、centos或user1用户的相关信息;
    grep -E "^(root|sshd|husa)>" /etc/passwd
        不要忘记了锚定词尾
3、找出/etc/rc.d/init.d/functions文件中某单词后面跟一个小括号的行;
    grep -E "<[[:alnum:]]+>()" /etc/rc.d/init.d/functions
4、使用echo命令输出一绝对路径,使用egrep取出基名;
    echo "/home/husa" | grep -E -o "([^/]+)/?$"
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、IP地址
    "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"
7、添加用户bash, testbash, basher以及nologin(其shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;
    ~]# grep  -E  "^([^:]+>).*1$"  /etc/passwd 
fgrep

fgrep:不支持正则表达式元字符

    当无需要用到元字符去编写模式时,使用fgrep效率更高

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39253.html

相关文章

  • Nginx 一点一滴 01 - 安装运行

    摘要:这时才发现上面的配置错误,必须用绝对路径,不能用形如符号卸载重装的正确姿势查看当前版本版本信息这里要重定向才可以输出到文件哦之后,进程是重新创建了的里面保存的是的主进程号 GET THE CODE ganiks ➜ nginx-1.8.0 wget http://nginx.org/download/nginx-1.8.0.tar.gz ganiks ➜ nginx-1.8....

    FWHeart 评论0 收藏0
  • Nginx笔记(一)Nginx安装

    摘要:环境准备准备服务器确保有网络确保可用关闭规则查看规则关闭规则保险起见,再查看下查表里是否有规则有的话,也关闭关闭策略查看是否开启关闭安装基础库开始安装访问官网复制以下源服务器上创建的源改成验证源从源安装验证显示如下启动 环境准备 准备服务器centos7.2 确保有网络 ping www.baidu.com 确保yum可用 yum list | grep gcc 关闭iptables规...

    shinezejian 评论0 收藏0
  • Nginx基础篇(1)- Nginx的快速搭建和基本参数

    摘要:什么是多路服用的实现方式基本原理函数监视的文件描述符分类,分别是和。缺点能够监视文件描述符的数量存在最大限制。三的快速搭建和基本参数方式安装参考创建文件,并输入如下内容可选值有和。 Nginx的快速搭建和基本参数 一、Nginx简介 1. Nginx简述 Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。 2. 常见的HTTP服务 httpd - Apache IIS -...

    warmcheng 评论0 收藏0
  • Nginx基础篇(1)- Nginx的快速搭建和基本参数

    摘要:什么是多路服用的实现方式基本原理函数监视的文件描述符分类,分别是和。缺点能够监视文件描述符的数量存在最大限制。三的快速搭建和基本参数方式安装参考创建文件,并输入如下内容可选值有和。 Nginx的快速搭建和基本参数 一、Nginx简介 1. Nginx简述 Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。 2. 常见的HTTP服务 httpd - Apache IIS -...

    Code4App 评论0 收藏0
  • Linux下Nginx的安装、升级及动态添加模块

    摘要:新版本主进程退出的同时,旧版本主进程将会自动启动它的工作进程。下面我们来看一下如何给运行中的添加模块。 原文链接:http://xueliang.org/article/detail/20160615172540639 系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget...

    W4n9Hu1 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<