shell编程之正式表达式

一、正则表达式

       正则表达式又称正规表达式、常规表达式。在代码中常简写为 regex、regexp 或 RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说, 是**一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串**。

1、基础正则表达式

     正则表达式的字符串表达方法根据不同的严谨程度与功能分为基本正则表达式和扩展正则表达式。基础正则表达式是常用正则表达式的基础部分。文本处理工具中的grep和sed支持基础正则表达式。下面介绍几种常见的用法
grep -n 'the' 123.txt     ####查找文本123.txt中的带the的特定字符的行
grep -vn ‘the’ 123.txt    ####查找文本中不带the的行
grep -in 'the' 123.txt     ####不区分大小写查找文本中带the的行
grep -n 'sh[io]rt' 123.txt    ####查找带shirt或short的行
grep -n 'oo' 123.txt    ####查找包含重复字符oo 的行
grep -n '[^w]oo' 123.txt    ####查找以w开头包含重复字符oo的行
grep -n 'ooo' 123.txt    ####查找包含重复字符ooo的行
grep -n 'woo*d' 123.txt      ####查找以w开头其中最少含一个o或多个以d结尾单词的行
grep -n '[0-9][0-9]*' 123.txt    ####查找最少含一个或多个0到9数字的行
grep -n 'wo*d' 123.txt    ####查找以w开头其中含0个或多个o以d结尾的行
grep -n 'o\{2\}' 123.txt    ####查找带2个o子符的行
grep -n 'wo\{2,5\}d' 123.txt    ###查找以w开头以d结尾,中间含2到5个o的字符串
grep -n 'wo\{2,\}d' 123.txt    ####查找以w开头d结尾,中间包含两个或2个以上o的字符的行
 grep -vE '^*#|^$' /etc/httpd/conf/httpd.conf

2、扩展正则表达式

     为了简化整个指令,需要使用范围更广的扩展正则表达式。
yum -y install httpd
systemctl start httpd
egrep -v '^#|^$|^*#' /etc/httpd/conf/httpd.conf    ####查找httpd文件中除了以#开头以空格结尾的任何行

二、文本处理器

1、sad工具使用方法

     sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务。

sed -n ‘3p’ 123.txt ####查看文件中第三行
sed -n ‘p’ 123.txt ####相当于cat 123.txt
sed -n ‘3,5p’ 123.txt ####查看文件中第三到第五行
sed -n ‘p;n’ 123.txt ####查看文件中的奇数行
sed -n ‘n;p’ 123.txt ####查看文件中的偶数行
sed -n ‘1,5{p;n}’ 123.txt ####查看文件中1到5行中的奇数行
sed -n ‘10,KaTeX parse error: Expected 'EOF', got '#' at position 21: …' 123.txt #̲###查看10到末行中的偶数行…/p’ 123.txt ####输出以数字结尾行
sed -n ‘/<wood>/p’ 123.txt ####输出包含单词wood的行 < >代表单词边界
nl 123.txt | sed ‘3d’ ####删除第三行
nl 123.txt | sed ‘/cross/d’ ###删除包含cross的行 !可以用来取反
sed ‘/1/d’ 123.txt ####删除以小写字母开头的行
sed ‘/.KaTeX parse error: Expected 'EOF', got '#' at position 17: …d’ 123.txt #̲###删除以“.“结尾的行 …/d’ 123.txt ####删除所有空行
sed ‘s/the/THE/’ 123.txt ####将每行中的第一个the替换成THE
sed ‘s/I/L/2’ 123.txt ####将每行中的第2个I替换成L
sed ‘s/the/THE/g’ 123.txt ####将文件中的所有the替换为THE
sed ‘s/o//g’ 123.txt ####将文件中的所有o删除(替换为空串)
sed ‘s/^/#/’ 123.txt ####每行行首插入#号
sed ‘/the/s/^/#’ 123.txt ####在包含the的每行行首插入#号
sed ‘3,5s/the/THE/g’ 123.txt ####将3到5行中的所有the替换成THE
sed ‘/the/s/o/O/g’ 123.txt ####将包含the的所有行中的o替换成O
迁移符合条件的文本在使用 sed 命令迁移符合条件的文本时,常用到以下参数.
H:复制到剪贴板;
g、G:将剪贴板中的数据覆盖/追加至指定行;
w:保存为文件;
r:读取指定文件;
a:追加指定内容
sed ‘/the/{H;d};$G’ 123.txt ####将包含the的行迁移到文件末尾,{;}用于多个操作
sed '1,5{H;d};'17G 123.txt ####将第一行到五行内容转移到17行后
sed ‘/the/w out.file’ 123.txt ####将包含the的行保存到文件out.file中
sed ‘/the/r /etc/hostname’ 123.txt ####将文件/etc/hostname内容添加到包含the的每行以后
sad ‘3aNew’ 123.txt ####在第三行后插入一个新行,内容为New
sed ‘/the/aNew’ 123.txt ####在包含the的每行后插入一个新行,内容为New
sed ‘3aNew1\nNew2’ 123.txt ####在每行后插入多个内容,中间的\n表示换行
使用脚本编辑文件使用 sed 脚本将多个编辑指令存放到文件中(每行一条编辑指令),通过“-f”选项来调用
sed ‘1,5{H;d};17G’ 123.txt ####将第一行到第五行内容转移到第17行后
在这里插入图片描述
编辑一个新的文本opt.list并通过sed调用


  1. a-z ↩︎

猜你喜欢

转载自blog.csdn.net/Laiyunpeng666/article/details/108037131
今日推荐