Shell入门到放弃
正则表达式
- Linux文件中每行都有一个$结尾,空行也有,一般看不见这个$
基本-BRE
| 符号 | 释义 |
|---|---|
| ^ | 尖角号,用于模式的最左侧,如“^oldboy”,匹配以oldboy单词开头的行 |
| $ | 美元符,用于模式的最右侧,如”oldboy$”,表示以oldboy单词结尾的行 |
| ^$ | 组合符,表示空行 |
| . | 匹配任意一个且只有一个字符,不能匹配空行 |
| \ | 转义字符,让特殊含义的字符,现出原形,还原本意,例如\.代表小数点 |
| * | 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容 |
| .* | 组合符,匹配所有内容 |
| ^.* | 组合符,匹配任意多个字符开头的内容 |
| .*$ | 组合符,匹配以任意多个字符结尾的内容 |
| [abc] | 匹配集合内的任意一个字符,a或b或c,可以写[a-c] |
| [^abc] | 匹配除了^后面的任意字符,a或b或c,^表示对[abc]的取反 |
扩展-ERE
| 符号 | 释义 |
|---|---|
| + | 匹配前一个宁符1次或多次 |
| [:/]+ | 匹配括号内的”∵:”或者”/“字符1次或多次 |
| ? | 匹配前一个字符0次或1次 |
| | | 表示或者,同时过滤大哥字符串 |
| () | 分组过滤,被括起来的内容表示一个整体 |
| a{n,m} | 匹配前一个字符最少n次,最多m次 |
| a{n,} | 匹配前一个字符最少n次 |
| a{n} | 匹配前一个字符正好n次 |
| a{,m} | 匹配前一个字符最多m次 |
grep-对文本内容进行过滤,筛选
| 参数 | 释义 |
|---|---|
| -v | 排除匹配结果 |
| -n | 显示匹配行与行号 |
| -i | 不区分大小写 |
| -c | 只统计匹配的行数 |
| -E | 使用egrep命令(加这个参数可以使用扩展ERE) |
| –color=auto | 为grep过滤结果添加颜色 |
| -w | 只匹配过滤的单词 |
| -o | 只输出匹配的内容 |
grep语法
1 | |
sed-对文件或是数据流进行加工处理
- 注意sed和awk使用单引号,双引号有特殊解释
- sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。
- sed是操作、过滤和转换文本内容的强大工具。
sed参数
| 参数 | 解释 |
|---|---|
| -n | 取消默认sed的输出,常与sed内置命令p一起用 |
| -i | 直接将修改结果写入文件,不用-i, sed修改的是内存数据 |
| -e | 多次编辑,不需要管道符了 |
| -r | 支持正则扩展 |
sed内置命令字符
| sed的内置命令字符 | 解释 |
|---|---|
| a | append,对文本追加,在指定行后面添加一行/多行文本 |
| d | Delete,删除匹配行 |
| i | insert,表示插入文本,在指定行前添加一行/多行文本 |
| p | Print ,打印匹配行的内容,通常p与-n一起用 |
| s/正则/替换内容/g | 匹配正则内容,然后替换内容(支持正则),结尾g代表全局匹配 |
sed语法
1 | |
sed增删改查操作
1 | |
查
输出文件第二到三行
1 | |
1 | |
输出文件第二及下面三行
1 | |
1 | |
匹配qq所在的行并打印
1 | |
1 | |
增
第二行下面增加一行数据
1 | |
第二行上面增加一行数据
1 | |
a空模式匹配
1 | |
改
My全部改为I
1 | |
1 | |
多次编辑规则
1 | |
删
匹配qq所在的一行并删除
1 | |
1 | |
匹配第3行到最后一行并删除
1 | |
1 | |
删除第二行到第三行
1 | |
1 | |
awk
| 参数 | 解释 |
|---|---|
| -F | 指定分割字段符 |
| -v | 定义或修改一个awk内部的变量 |
| -f | 从脚本文件中读取awk命令 |
| 内置变量 | 解释 |
|---|---|
| FS | 输入字段分隔符,默认为空白字符 |
| oFS | 输出字段分隔符,默认为空白字符 |
| RS | 输入记录分隔符(输入换行符),指定输入时的换行符 |
| ORS | 输出记录分隔符(输出换行符),输出时用指定符号代替换行符 |
| NF | NF: number of Field,当前行的字段的个数(即当前行被分割成了几列),字段数量 |
| NR | NR:行号,当前处理的文本行的行号。 |
| FNR | FNR:各文件分别计数的行号 |
| FILENAME | FILENAME:当前文件名 |
| ARGC | ARGC:命令行参数的个数 |
| ARGV | ARGV:数组,保存的是命令行所给定的各参数 |
真寄霸多、学尼玛、放弃了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 🏰linlink~个人笔记🏰!
评论
