正则表达式

POSIX标准的符号

  1. [:alnum:] -> 英文大小写字母和数字 0-9,A-Z,a-z
  2. [:alpha:] -> 英文大小写字母 A-Z,a-z
  3. [:blank:] -> 空格键的tab键
  4. [:cntrl:] -> 键盘上的控制按键CR LF Tab Del等
  5. [:digit:] -> 数字 0-9
  6. [:graph:] -> 除了空格符和tab外的其他所有按键
  7. [:lower:] -> 小写字母a-z
  8. [:print:] -> 任何可以打印出来的字符
  9. [:punct:] -> 代表标点符号: * ` ? ! ;:#$等
  10. [:upper:] -> 大写字母A-Z
  11. [:space:] -> 任何产生空白的字符 空格键 tab CR等
  12. [:xdigit:] -> 16进制数值类型0-9,A-F,a-f

正则表达式一些规则

. -> 代表任意一个字符
[abc] -> 代表字符abc中的一个
[a-z] -> 代表字符a-z中的一个
[^abc] -> 代表不能出现abc中的一个
^abc -> 代表必须以a开头,同时bc在后面,即必须abc开头
abc$ -> 代表必须以c结尾,同时bc在前面,即必须abc结尾
.$ -> 代表必须以.结尾
^$ -> 代表空白行
\ -> 代表进行转义

-> 代表重复前面0次到无穷多次
{m} -> 代表出现m遍
{m,n} -> 代表出现m到n遍
{m,} -> 代表出现至少m遍

扩展正则表达式

+ -> 代表重复前面至少一次
? -> 代表重复前面0次或1次
| -> 代表两个正则表达式之间的或
() -> 代表群组
()+ -> 代表群组重复至少一次

其他散乱知识

runlevel3 和 runlevel5的开机启动脚本分别放置在 /etc/rc3.d/etc/rc5.d

命令

  1. grep [-A] [-B] [--color=auto] '搜寻字符串' filename

    grep -A n 同时显示后n行
    grep -B n 同时显示前n行
    grep -n 显示行号
    grep -i 忽略大小写
    grep -v 反向搜寻
    grep -E 使用扩展正则表达式
    grep --color=auto 高亮显示
    dmesg | grep 'eth' 命令dmesg可以列出内核产生的信息
    dmesg | grep '[^[:lower:]]
    dmesg | grep -v '^$' | grep -v '^#' 不是空白行,同时不是以#号开头
    echo "ooo" | grep -n 'ooo' 至少两个o
    echo "123" | grep -n '[0-9][0-9]
    ' 含数字
    echo "oo" | grep -n 'o{2} 两个o
    echo "oooo" | grep -n o{2,5} 两到五个o

  2. sed (字符串编辑命令 string edit)

    sed -n 只有经过处理的行才进行显示
    sed -e 直接在指令模式进行动作编辑
    sed -f filename 将sed的动作写在文件中进行调用
    sed -r 支持扩展正则表达式
    sed -i 直接修改读取的档案内容,而不是在屏幕输出
    sed '[n1][,n2]function' 在n1-n2行进行function动作,最好用单引号''括住
    function
    -- a STR 在目前的下一行新增STR
    -- c STR 用STR取代n1-n2行的内容
    -- d 删除n1-n2行的内容
    ---- /正则表达式/d 通过正则表达式删除
    -- i STR 在目前行的上一行插入STR
    -- p 将数据打印到屏幕,与-n一起用
    -- s/word1/word2/g 在n1-n2行用word2取代word1,可以使用正则表达式
    例子
    ls /etc/passwd | sed '2,5c no.2-5 replace' 取代2-5行为no.2-5 replace
    ls /etc/passwd | sed -n '5,7p' 显示5-7行,或者head -n 20 | tail -n 10
    sed -i '$a #hello' file.txt 直接在file.txt后面加上#hello
    cat /etc/passwd | sed -e '4d' -e '6c no six line' > passwd.new 第四行删除,第6行替换

  3. egrep (扩展正则表达式)

  4. printf (格式化打印)

    printf '打印格式' 实际内容
    printf '\x45\n' 将16进制表示的45转换成ascii码表示的字符

  5. awk (好用的数据处理工具,awk处理每一行字段内的数据)

    awk '条件类型1{动作1} 条件类型2{动作2}...' filename
    相关变量
    -- $0 代表一整行
    -- $n 代表第n个字段
    -- NF 每一行拥有的字段总数
    -- NR 目前处理的是第几行
    -- FS 目前的分割字符
    逻辑运算符
    -- C语言的常规逻辑运算符 > < >= <= == !=
    awk动作内支持if
    last -n 5 | awk '{print $1 "\t" $3}' 打印出第1和第3个字段,中间以\t
    cat file | awk '{print $1 "\t line:" NR "\t column" NF}'
    cat /etc/passwd | awk '{FS=":"} $3<10{print $1 "\t" $3}' 第一行执行后指定分隔符为:,第三栏小于10时,打印第一栏和第三栏
    cat /etc/passwd | awk 'BEGIN {FS=":"} $3<10{print $1 "\t" $3}' 预先设定awk的分隔符
    cat /etc/passwd | awk 'NR==1{varname=hello printf "%10s" hello} NR>=2{变量=1 printf "%10s" 变量}' 变量不需要加$
    cat /etc/passwd | awk '{if(NR==1) print "hello"}'

  6. diff (比较档案的不同,主要以行进行比对)

    diff [-bBi] fromfile tofile
    -- fromfile 或 tofile 用 -取代,代表stdin
    diff -b 忽略一行当中只有多个空白的差异
    diff -B 忽略空白行的差异
    diff -i 忽略大小写的差异
    diff -Naur file.old file.new > file.path 制作补丁档案
    diff /etc/rc3.d/ /etc/rc5.d/ 可以比对目录下文件的不同

  7. cmp (以字节比对档案的不同)

    cmp [-s] file1 file2
    cmp -s 列出所有的不同点,默认只列出一个不同点

  8. patch (旧档案更新成新档案,或还原,类似于打补丁)

    patch -pN < patch_file 进行更新
    patch -R -pN < patch_file 进行还原
    patch -pN 取消N层目录的意思
    patch -R 代表还原
    patch -p0 < file.patch

  9. pr (linux下的打印命令)

例子

grep '*' /etc/* 搜寻/etc下含有号的文件
grep '*' $(find /etc -type f) 搜寻/etc下及其子目录下含有
号的文件
find / -type f | xargs -n 10 grep '*' 找到后每次丢10个给grep处理

参考

鸟哥的Linux私房菜 第三版

linux备忘录-正则表达式与文件格式化处理的更多相关文章

  1. 别人的Linux私房菜(12)正则表达式与文件格式化处理

    vi gerp awk sed支持正则表达式   cp ls不支持,只能使用bash本身的通配符 正则表达式分为基础正则表达式和拓展正则表达式 使用正则表达式注意语系的影响 http://cn.lin ...

  2. 鸟哥的linux私房菜——第12章 正则表达式与文件格式化处理

    12.1什么是正则表达式 正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序. vi.gr ...

  3. 鸟哥的Linux私房菜-第10/11/12/13章(vim程序编辑器、学习bash、正则表达式与文件格式化处理、学习Shell Scripts)

    第10章 vim程序编辑器 可以将vim看做vi的进阶版本,vim可以用颜色或底线等方式来显示出一些特殊的信息. 为何要学习vim?因为: a. 所有的 Unix Like 系统都会内建 vi 文书编 ...

  4. linux 正则表达式与文件格式化处理

    此文涉及命令:grep.sed.awk.printf.diff.cmp.patch. 概念: 什么是正则表示法 简单的说,正则表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为, 正则表 ...

  5. linux备忘录-基本命令

    基本命令 将命令分类为获取信息类,文件管理类,目录管理类,文本处理类,系统类,工具类. 获取信息类 uname # 输出所有信息 # 一行输出,空格分割 uname -a # 输出内核名称 uname ...

  6. 第一阶段·Linux运维基础 第3章·文件属性、正则表达式、文件权限

    01-文件属性内容介绍 02- inodeyublock讲解 03-访问oldboyfile的寻宝过程 04-inode与block小结 05-磁盘空间不足案例详解 06-Linux文件类型及拓展名 ...

  7. Linux批量重命名文件

    五种方法实现Linux批量重命名文件 Linux批量重命名文件是指对某些特定的文件统一进行重新命名,以改变原来一批文件的名称,这里介绍五种方法来实现. Linux批量重命名文件会涉及到改变一个字母.改 ...

  8. linux shell 正则表达式(BREs,EREs,PREs)差异比较

    linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...

  9. 【转载】在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间

    在windows下,一个文件有:创建时间.修改时间.访问时间.而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是 ...

随机推荐

  1. 课时91.CSS元素显示模式(掌握)

    在HTML中HTML将所有的标签分为两类,分别是容器级和文本级 在CSS中CSS也将所有的标签分为两类,分别是块级元素和行内元素 1.什么是块级元素,什么是行内元素? 块级元素会独占一行 行内元素不会 ...

  2. git使用过程的问题与解决办法

    一.什么是Git Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程: Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote ...

  3. etcd客户端c#

    etcd是什么东西就不介绍了,自己网上搜索,简单说就是一个分布式K/V存储系统: 由于它是go语言写的,没有其它客户端,找到一个java的. 出于方案积累原因,写了c#版本,可以使用.c#版本是基于e ...

  4. multimap的使用

    multimap由于允许有重复的元素,所以元素插入.删除.查找都与map不同. 插入insert(pair<a,b>(value1,value2)) #include <iostre ...

  5. 选择客栈(noip2011 day1 t2)

    题目描述 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到 nn n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k−1 表示),且每家客栈都设有一家咖啡店,每 ...

  6. 洛谷P2439 [SDOI2005]阶梯教室设备利用(带权区间覆盖)

    题目背景 我们现有许多演讲要在阶梯教室中举行.每一个演讲都可以用唯一的起始和终止时间来确定,如果两个演讲时间有部分或全部重复,那么它们是无法同时在阶级教室中举行的.现在我们想要尽最大可能的利用这个教室 ...

  7. ABAP术语-Database Rollback

    Database Rollback 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/24/1051238.html Operation tha ...

  8. chrome debugger 调试

    debugger 使用chrome调试时,html页面的js代码中可能不好打断点(因为在jvm中才会有代码) 我一开始是故意在需要断点的后面或前面写个错的alert,通过jvm找到此处,然后在需要的地 ...

  9. 嵌入式C语言查表法

    转自:https://blog.csdn.net/morixinguan/article/details/51799668    作者:Engineer-Bruce_Yang 就像下面的这个表 之前写 ...

  10. 数据分析处理库Pandas——字符串操作

    字符串小写 字符串大写 字符串长度 去掉字符串中的空格 去掉字符串中的左空格 去掉字符串中的右空格 字符串替换 按字符串切割 字符串是否包含在另一个字符串中