千家信息网

shell正则表达式

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,Shell脚本扩展一 正确表达式正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。1. 支持的命令:grep、vim、find、awk、sed等。1、.代表任意单个字符, 如:/l..e
千家信息网最后更新 2025年01月20日shell正则表达式

Shell脚本扩展

正确表达式

正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

1. 支持的命令:

grepvimfindawksed等。

1.代表任意单个字符, 如:/l..e/与包含一个l,后跟两个字符,然后跟一个e的行相匹配

检索wang.txt文件中匹配s字符的。

2、^代表行的开始。 ^love 如:与所有love开头的行匹配

检索wang.txt文件中以N开头的。

3$代表行的结束。love$ 如:与所有love结尾的行匹配

那么'^$' 就表示空行

通配符

检索wang.txt文件中匹配小写字母az之间的。

注意:

[abc]表示匹配单个字符abc

[123]表示匹配单个字符123

[A-Z]表示匹配大写字母A-Z之间一个

[^a]表示取反,匹配除去小写字母a的。

5、* 用于修饰前导字符,表示前导字符出现0或任意多

检索wang.txt文件中出现0次或多次T

6、\? 用于修饰前导字符,表示前导字符出现01


7、\+ 用于修饰前导字符,表示前导字符出现1或多

8、\{n,m\} 用于修饰前导字符,表示前导字符出现n至m次 n和m都是整数,且n

表示前导字符出现nm次;

n/m为整数,并且m>n

其他形式:

\{n\}连续的n个前导字符;

\{n,\}连续的至少n个前导字符;


检索wang.txt文件中出现24n

9、\ 用于转义紧跟其后的单个特殊字符,使该特殊字符成为普通字符

检索wang.txt文件中含有.的。

10、|表示 如: a|b|c 匹配abc。如:grep|sed匹配grepsed

检索wang.txt文件中含有ab的。

11、(),将部分内容合成一个单位组,比如 要搜索 glad good 可以如下 'g(la|oo)d'

二、grep命令的用法

参数:

1. -A NUM--after-context=NUM 除了列出符合行之外,并且列出后NUM行。

列出chai.txt文件中Tom行与后俩行

2. -B NUM--before-context=NUM -A NUM 相对,但这此参数是显示除符合行之外并显示在它之前的NUM行。


列出chai.txt文件中Tom行与前俩行。

3 -C [NUM], -NUM, --context[=NUM] 列出符合行之外并列出上下各NUM行,默认值是2

列出chai.txt文件中Tom行与前后俩行。

4 -c, --count 不显示符合样式行,只显示符合的总行数。若再加上-v,--invert-match,参数显示不符合的总行数

列出chai.txt文件中含有Tom的行数;

列出chai.txt文件中不含有Tom的行数。

5-i--ignore-case 忽略大小写差别

列出chai.txt文件中含有tom(大小写)的行。

6、-n--line-number 在匹配的行前面打印行号

列出chai.txt文件中含有tom(大小写)的行,并且打印出行号。

7-v--revert-match 反检索,只显示不匹配的行

列出chai.txt文件中不含有tom的行。

8、精确匹配:

例如在抽取字符串" 48",返回结果包含诸如484和483等包含"48"的其他字符串,实际上应精确抽取只包含48的各行。

精确列出chai.txt文件中含有30的行。

9、-s 不显示不存在或无匹配文本的错误信

xin.txt文件不存在,检索时候提示搜索不到的错误信息,

如果不要错误信息提示,则加上-s

三、sed命令的用法

1sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。

2把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。

3文件内容并没有改变,除非你使用重定向存储输出。

1替换: s命令
1.1 基本用法

chai.txtThe替换成chai,输出到aaa.txt文件中。

sed 替换命令

/../../分隔符(可以用其他符合代替)

The 搜索的字符串

chai 替换的字符串

<chai.txt> 搜索的文件

aaa.txt 输出到的文件

1.2 & 表示匹配的字符串

有时可能会想在匹配到的字符串周围或附近加上一些字符 .
如: sed 's/abc/(abc)/' new


sed 默认只替换搜索字符串的第一次出现 , 利用 /g 可以替换搜索字符串所有

如果需要对同一文件或行作多次修改,可以使用 "-e" 选项

3.删除行:d命令

从某文件中删除包含 "how" 的所有行

将passwd内容显示并打印行号,同时删除25行。

nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号。

4.增加行:a命令(在指定的行后新增)或i命令(在指定的行前新增)

a的后面可以接字符串,而这些字符串会在新的一行出现

/etc/passwd的第二行后增加"XXXXX"字样的新行

passwd内容显示并打印行号,同时在第二行后新增hello


passwd内容显示并打印行号,同时在第二行前新增hello

如果要同时新增多行,则每行之间要用反斜杠\来进行新行的添加

5、取代行:c命令

c的后面可以接字符串,这些字符串可以取代n1,n2之间的行

取代行

将passwd内容显示并打印行号,同时取代25行间内容。

6、打印:p命令

sed '/north/p' datafile 默认输出所有行,找到north的行重复打印

仅列出passwd文件中的第57行内容。

sed -i选项可以直接修改文件中的内容


6.扩展:

调用sed有三种方式:

l 在命令行键入命令

l sed命令插入脚本文件,然后调用sed

l sed命令插入脚本文件,并使sed脚本可执行。

A、 使用sed命令行格式为:

sed [选项] sed命令 输入文件。

记住在命令行使用sed命令时,实际命令要加单引号。sed也允许加双引号。

B、使用sed脚本文件,格式为:

sed [选项] -f sed脚本文件 输入文件

C、要使用第一行具有sed命令解释器的sed脚本文件,其格式为:

sed脚本文件 [选项] 输入文件


第一行是sed命令解释行。脚本在这一行查找sed以运行命令,这里定位在/bin。

第二行以/company/开始,这是附加操作起始位置。a\通知sed

是一个附加操作,首先应插入二个新行。

第三、四行是附加操作要加入到拷贝的实际文本。






文件 字符 命令 内容 字符串 前导 脚本 检索 搜索 一行 行号 处理 同时 输出 之间 单个 缓冲区 缓冲 精确 代表 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 临河网络安全 信息网络安全管理师证书 服务器主机需要电源吗 魔兽世界转服务器同战网 浦东新区网络技术服务包括什么 网络安全防诈骗主题演讲 数据库多值依赖 例子 计算机网络技术云计算平台运维 深圳前海速捷软件开发 软件开发主管述职报告 马鞍山电脑服务器回收服务介绍 山西移动软件开发公司 软件开发中的常见的关键技术 云南大学网络安全专业 浦东新区数据软件开发质量 合肥软件开发公司哪个好 网络安全信息办 守护网络安全呵护学生成长 军工仿真软件开发都是集成吗 数据库怎么设置字段加密 数据库系统的主要三个组成 小学争做网络安全小卫士活动方案 黄埔区正规网络技术开发动态 程序软件开发费用是多少 朝阳区品牌软件开发技术指导 网络安全初中版 中城投数据库 青少年应该注意哪些网络安全 网络安全永记心间知识 服务器时间会慢
0