• 正规表示法与文件格式化处理


    正规表示法与文件格式化处理

      正规表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为, 正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字符串的处理程序!

    基础正规表示法

    在这里插入图片描述

    grep 的一些进阶选项

    • grep [-A] [-B] [--color=auto] '搜寻字符串' filename
    • 选项与参数:
      • -A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
      • -B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来;
      • --color=auto 可将正确的那个撷取数据列出颜色

    基础正规表示法字符汇整 (characters)

    在这里插入图片描述

    sed 工具

    • sed [-nefr] [动作]

    • 选项与参数:

      • -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
      • -e :直接在指令列模式上进行 sed 的动作编辑;
      • -f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作;
      • -r :sed 的动作支持的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
      • -i :直接修改读取的文件内容,而不是由屏幕输出。动作说明: [n1[,n2]]functionn1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
    • function 有底下这些咚咚:

      • a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)~
      • c :取代, c 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行!
      • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
      • i :插入, i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行);
      • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运作~
      • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

    延伸正规表示法

    在这里插入图片描述

    文件的格式化与相关处理

    格式化打印: printf

    • printf '打印格式' 实际内容
    • 选项与参数:
    • 关于格式方面的几个特殊样式:
      • a 警告声音输出
      •  退格键(backspace)
      • f 清除屏幕 (form feed)
      • 输出新的一行
      • 亦即 Enter 按键
      • 水平的 [tab] 按键
      • v 垂直的 [tab] 按键
        xNN NN 为两位数的数字,可以转换数字成为字符。
    • 关于 C 程序语言内,常见的变数格式
      • %ns 那个 n 是数字, s 代表 string ,亦即多少个字符;
      • %ni 那个 n 是数字, i 代表 integer ,亦即多少整数字数;
      • %N.nf 那个 n 与 N 都是数字, f 代表 floating (浮点),如果有小数字数,假设我共要十个位数,但小数点有两位,即为 %10.2f 啰!

    awk:好用的数据处理工具

    • awk '条件类型 1{动作 1} 条件类型 2{动作 2} ...' filename

      awk 主要是处理『每一行的字段内的数据』,而默认的『字段的分隔符为 "空格键" 或 "[tab]键" 』!
    在这里插入图片描述在这里插入图片描述

    diff 通常是用在同一的文件(或软件)的新旧版本差异

    • diff [-bBi] from-file to-file
    • 选项与参数:
      • from-file :一个档名,作为原始比对文件的档名;
      • to-file :一个档名,作为目的比对文件的档名;
      • 注意,from-file 或 to-file 可以 - 取代,那个 - 代表『Standard input』之意。
      • -b :忽略一行当中,仅有多个空白的差异(例如 "about me" 与 "about me" 视为相同
      • -B :忽略空白行的差异。
      • -i :忽略大小写的不同。

    cmp 主要也是在比对两个文件,他主要利用『字节』单位去比对

    • cmp [-l] file1 file2
    • 选项与参数:
      • -l :将所有的不同点的字节处都列出来。因为 cmp 预设仅会输出第一个发现的不同点。

    patch 将旧的文件升级成为新的文件

    • patch -pN < patch_file <==更新
    • patch -R -pN < patch_file <==还原
    • 选项与参数:
      • -p :后面可以接『取消几层目录』的意思。
      • -R :代表还原,将新的文件还原成原来旧的版本。

    文件打印准备:pr

    • pr 目标对象

    重点回顾

    • 正规表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为;
    • 正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字符串的处理程序;
    • 只要工具程序支持正规表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用;
    • 正规表示法与通配符是完全不一样的东西!通配符 (wildcard) 代表的是 bash 操作接口的一个功能, 但正规表示法则是一种字符串处理的表示方式!
    • 使用 grep 或其他工具进行正规表示法的字符串比对时,因为编码的问题会有不同的状态,因此, 你最好将 LANG 等变量设定为 C 或者是 en 等英文语系!
    • grep 与 egrep 在正规表示法里面是很常见的两支程序,其中, egrep 支持更严谨的正规表示法的语法;
    • 由于编码系统的不同,不同的语系 (LANG) 会造成正规表示法撷取资料的差异。因此可利用特殊符号如[:upper:] 来替代编码范围较佳;
    • 由于严谨度的不同,正规表示法之上还有更严谨的延伸正规表示法;
    • 基础正规表示法的特殊字符有: *, ., [], [-], [^], ^, $ 等!
    • 常见的支持正规表示法的工具软件有: grep , sed, vim 等等
    • printf 可以透过一些特殊符号来将数据进行格式化输出;
    • awk 可以使用『字段』为依据,进行数据的重新整理与输出;
    • 文件的比对中,可利用 diff 及 cmp 进行比对,其中 diff 主要用在纯文本文件方面的新旧版本比对
    • patch 指令可以将旧版数据更新到新版 (主要亦由 diff 建立 patch 的补丁来源文件)
  • 相关阅读:
    简化日常工作之三:自己写一个CI脚手架
    gearman的安装和配置
    简化日常工作系列之二 ----- 定时采集小说
    简化日常工作系列之一 ---- 自动新建每日记录
    代码简洁之四 统一抽象层次
    php处理金额显示的一些笔记
    代码简洁之三:减少注释 增加代码可读性
    通用性安装redis和基本配置
    写一个Redis封装类
    Exchange2010安装指南
  • 原文地址:https://www.cnblogs.com/chengmf/p/12651732.html
Copyright © 2020-2023  润新知