加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell正则表达式

发布时间:2020-12-15 17:08:23 所属栏目:安全 来源:网络整理
导读:Shell 脚本扩展 一 正确表达式 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 1. 支持的命令: grep 、 vim 、 find 、 awk 、 sed 等。 1 、 . 代表 任意单个 字符 , 如: /l..e/ 与包含一个 l ,后跟两个字符,然后跟一个 e 的行相匹

Shell脚本扩展

正确表达式

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

1.支持的命令:

grepvimfindawksed等。

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

wKioL1laJH2wY7NPAAATyWzK6Bo699.png-wh_50

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

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

wKiom1laJJDRp6HNAAASO3nQ-PE632.png-wh_50

.txt文件中以N开头的。

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

那么^$就表示空行

wKioL1laJKSiXN-nAAAWmrWLm04269.png-wh_50

通配符

wKioL1laJLbw3sZ9AAAiv4PXeDk932.png-wh_50

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

注意:

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

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

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

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

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

wKiom1laJNKyYttlAAAQfcWeIVc502.png-wh_50

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

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


wKioL1laJOnAFGfAAAAZLV1tIz0307.png-wh_50

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

wKiom1laJP6Q6ciBAAANrby7R_8383.png-wh_50

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

表示前导字符出现nm次;

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

其他形式:

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

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


wKiom1laJQ_hdvaYAAAQyg7RLHg584.png-wh_50

.txt文件中出现24n

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

wKiom1laJUHij9NTAAAXQ7UI_U4756.png-wh_50

.txt文件中含有.的。

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

wKioL1laJV2jN6TlAAAaTyQSB5U348.png-wh_50

.txt文件中含有ab的。

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

wKiom1laJXTyi5gGAAASsC4PdOA513.png-wh_50

二、grep命令的用法

参数:

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

wKiom1laJcnR4I7QAAAM_t8ja1Y404.png-wh_50

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

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

wKioL1laJeCTf_u3AAARJjVLNgw301.png-wh_50


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

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

wKioL1laJfSiuCyvAAAPLJMJvps485.png-wh_50

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

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

wKiom1laJgWRFgrZAAAiWjmK168264.png-wh_50

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

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

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

wKiom1laJhfyz3URAAALqu3TCS8603.png-wh_50

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

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

wKioL1laJjaDIdDkAAAO_6tqFZs317.png-wh_50

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

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

wKiom1laJkmR9A6wAAAY5IbcIOQ002.png-wh_50

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

8、精确匹配:

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

wKioL1laJlrgqP_PAAASdaMz83s817.png-wh_50

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

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

wKiom1laJnXBXhFmAAAT6bWzuB0451.png-wh_50

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

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

三、sed命令的用法

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

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

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

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

wKiom1laJvbhJWiNAAAweQYlZ9w157.png-wh_50

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

sed 替换命令

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

The 搜索的字符串

替换的字符串

<chai.txt>搜索的文件

aaa.txt输出到的文件

1.2 & 表示匹配的字符串

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

wKiom1laJsmizDGrAAAiJF1I4CI398.png-wh_50


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

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

3.删除行:d命令

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

wKioL1laJ22R8eerAAAc5rXf7Dg404.png-wh_50

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

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

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

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

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

wKiom1laJ4HjRxIpAAAZTGwdLUk369.png-wh_50

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

wKiom1laJ5biAIPDAAAa3pREktQ522.png-wh_50


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

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

wKioL1laJ6fC5uY5AAAWzVFyksU683.png-wh_50

5、取代行:c命令

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

取代行

wKiom1laJ8Dz3-gxAAAUuKJlzJ8663.png-wh_50

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

6、打印:p命令

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

wKiom1laJ-_yGhmQAAAW15ZXge0356.png-wh_50

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

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

wKioL1laJ_3jtmFrAAAtbwKEVks668.png-wh_50


6.扩展:

调用sed有三种方式:

l在命令行键入命令

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

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

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

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

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

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

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

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

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

wKioL1laKBSzBBTQAAARQpQ7qLQ742.png-wh_50


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

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

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

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

wKiom1laKC3Rhry7AAAa3S3ipew382.png-wh_50

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读