linux三剑客

linux三剑客

前言:本文暂时整理linux中正则表达式、三剑客的基础知识。后续训练内容会不定期更新。

1. 正则表达式

此正则表达式的资料来自[B站-CodeSheep:r2coding.com],放在自己笔记里以供个人学习使用。感谢CodeSheep大佬的资料分享,受益良多。示例内容也请查看以上链接。

  1. 字符
表达式 描述
[abc] 字符集。匹配集合中所含的任一字符
[^abc] 否定字符集。匹配任何不在集合中的字符
[a-z] 字符范围。匹配指定范围内的任意字符
. 匹配除换行符以外的任何单个字符
\ 转义字符
\w 匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。
\W 匹配任何非字母数字(等价于[^A-Za-z0-9_])。
\d 数字。匹配任何数字
\D 非数字。匹配任何非数字字符。
\s 空白。匹配任何空白字符,包括空格、制表符等
\S 非空白。匹配任何非空白字符。
  1. 分组与引用
表达式 描述
(expression) 分组。匹配括号里的整个表达式。
(?:expression) 非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。
\num 对前面所匹配分组的引用。比如(\d)\1可以匹配两个相同的数字,(Code)(Sheep)\1\2则可以匹配CodeSheepCodeSheep。
  1. 锚点/边界
表达式 描述
^ 匹配字符串或行开头。
$ 匹配字符串或行结尾。
\b 匹配单词边界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep
\B 匹配非单词边界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code。
  1. 数量表示
表达式 描述
? 匹配前面的表达式0个或1个。即表示可选项。
+ 匹配前面的表达式至少1个。
* 匹配前面的表达式0个或多个。
| 或运算符。并集,可以匹配符号前后的表达式。
{m} 匹配前面的表达式m个。
{m,} 匹配前面的表达式最少m个。
{m,n} 匹配前面的表达式最少m个,最多n个。
  1. 预查断言
表达式 描述
(?=) 正向预查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code。
(?!) 正向否定预查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code。
(?<=) 反向预查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep。
(?<!) 反向否定预查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep。
  1. 特殊标志
表达式 描述
/…/i 忽略大小写。
/…/g 全局匹配。
/…/m 多行修饰符。用于多行匹配。

2. grep

Global search REgular expression and Print out the line <—> 全局搜索 REgular 表达式并打印出行

1. 语法:
grep [options] [pattern] file
命令   参数      匹配模式  文件数据

2. 参数:
    -v  排除匹配结果
    -n  显示匹配行与行号
    -i  不区分大小写
    -c  只统计匹配的行数
    -E  使用egrep命令
    -w  只匹配过滤的单词
    -o  只输出匹配的内容
    
3. 匹配模式:
    就是想要找的东西,可以是“普通的文字符号”,也可以是“正则表达式”
    

3. sed

Stream Editor <—> 流编辑器

1. 作用:sed是操作、过滤和转换文本内容的强大工具。
常用功能包括结合正则表达式对文本实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定的字符串)、取行(取出指定行)。

2. 语法:
sed [选项] [sed内置命令字符] [输入文件]

3. 选项:
    -n  取消默认sed的输出,常与sed内置命令p一起使用
    -i  直接将修改结果写入文本,不用-i,sed修改的是内存数据
    -e  多次编辑,不需要管道符
    -r  支持扩展的正则
    
4. 内置命令符
    a  append,对文本追加,在指定行后面添加一行/多行文本
    d  delete,删除匹配行
    i  insert,表示插入文本,在指定行前添加一行/多行
    p  print,打印匹配的内容,通常p与-n一起用
 s/正则/替换内容/g  匹配正则内容,然后替换内容,g表示全局

5. sed匹配范围
    空地址  全文处理
    单地址  指定文件某一行
    /pattern/  被模式匹配到的每一行
    范围匹配  "10,20"十到二十行;"10,+5"第十行向下5;"/pattern1/,/pattern2/"
    步长  "1~2"表示1、3、5、7;"2~2"表示2、4、6、8

4. awk

1. 作用:awk有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式,awk更是一门编程语言,支持条件判断、数组、循环等功能

2. 语法:
awk [option] 'pattern[action]' file ...
      参数     '模式 条件动作'       文件

3. awk的特征
    - awk默认以空格为分隔符,且多个空格可识别为一个空格作为分隔符
    - awk按行处理文件,一行处理完毕,处理下一行,根据用户指定的分割符去工作,没有指定则默认空格
    - awk指定分隔符后,awk把每一行切割后的数据对应内置变量
        - $0 表示整行
        - $NF 表示当前分割后的最后一列
        - 倒数第二列可以写成$(NF-1)
        
    - awk,必须外层单引号,内层双引号,内置变量$1,$2都不得加双引号,否则会识别为文本,尽量不加引号
        
4. awk内置变量
$0    完整的输入记录              
$n    指定分割符后,当前记录的第n个字段

NF(Number of fields)    分割后,当前行一共有多少个字段
NR(Number of records)    当前记录行,行数
FNR    各文件分别计数的行号
FS     输入字段分隔符,默认为空格
OFS    输出字段分隔符,默认为空白字符
RS     输入记录分隔符(输入换行符),指定输入时的换行符
ORS    输出记录分隔符(输出换行符),输出时用指定符号代替换行符    
ARGC   命令行参数的个数
ARGV   数组,保存的是命令行所给定的各参数

5. 参数
-F  指定分割字段符
-v  定义或修改一个awk的内置变量
-f  从脚本文件中读取awk命令

6. 模式
awk默认是按行处理文本,如果不指定任何模式(条件),awk默认一行行处理;如果指定了模式,只有符合模式的才会被处理。
可用关系运算符:< <= == != >= > ~ !~

7. 正则表达式
awk使用正则表达式,必须把正则放在"//"双斜杠中,

相关推荐

  1. linux剑客

    2024-05-12 14:24:02       8 阅读
  2. Linux文本剑客(1)

    2024-05-12 14:24:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 14:24:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 14:24:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 14:24:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 14:24:02       20 阅读

热门阅读

  1. Qt窗口及QWidget类详解

    2024-05-12 14:24:02       8 阅读
  2. 蓝桥杯备战10.分巧克力

    2024-05-12 14:24:02       11 阅读
  3. 【C++语言】模板

    2024-05-12 14:24:02       9 阅读
  4. 爬虫工具you-get

    2024-05-12 14:24:02       10 阅读
  5. Leetcode 572:另一颗树的子树

    2024-05-12 14:24:02       7 阅读
  6. 【力扣】70.爬楼梯

    2024-05-12 14:24:02       7 阅读
  7. 程序员副业录制课程

    2024-05-12 14:24:02       8 阅读
  8. 指针(3)

    2024-05-12 14:24:02       9 阅读
  9. leetcode 2316.统计无向图中无法互相到达点对数

    2024-05-12 14:24:02       9 阅读
  10. 3.1 Gateway之路由请求和转发

    2024-05-12 14:24:02       10 阅读