shell与正则表达式

作业一:整理正则表达式博客

已整理完。
作业二:grep作业(正则表达式及字符处理)
目标文件/etc/passwd,使用grep命令或egrep
1.显示出所有含有root的行:
[[email protected] ~]# grep -l ‘root‘ /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:
grep ‘bash‘ /etc/passwd
grep -A 1 -B 1 ‘bash‘ /etc/passwd
3. 显示出有多少行含有nologin。
[[email protected] ~]# grep -c ‘nologin‘ /etc/passwd
21
4.显示出那些行含有root,并将行号一块输出。
[[email protected] ~]# grep -n ‘root‘ /etc/passwd 或 egrep -n ‘root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
5.显示出文件名
[[email protected] ~]# grep -rn ‘root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

6.新建用户
abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来
[[email protected] ~]# useradd abominable
[[email protected] ~]# useradd abominate
[[email protected] ~]# useradd anomie
[[email protected] ~]# useradd atomize
[[email protected] ~]# grep -wE ‘abomina(bl|t)e|a(n|t)omiz?e‘ /etc/passwd --color

7.建四个用户
Alex213sb
Wpq2222b
yH438PIG
egon666
egon

过滤出用户名组成是字母+数字+字母的行
8.显示出/etc目录下所有包含root的文件名
[[email protected] ~]# grep -rl ‘root‘ /etc/
9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行
[[email protected] ~]# egrep -v "^$|^#" /etc/ssh/ssh_config 或 grep -Ev "^$|^[#;]" /etc/ssh/ssh_config

作业三:Sed作业:以/etc/passwd文件为模板

1,删除文件每行的第一个字符。
[[email protected] ~]# head -10 /etc/passwd >> test.txt
[[email protected] ~]# cat test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

[[email protected] ~]# sed -i ‘s/./ /‘ test.txt或sed -r ‘s/^(.)(.*)$/\2/‘ test.txt

[[email protected] ~]# cat test.txt
oot:x:0:0:root:/root:/bin/bash
in:x:1:1:bin:/bin:/sbin/nologin
aemon:x:2:2:daemon:/sbin:/sbin/nologin
dm:x:3:4:adm:/var/adm:/sbin/nologin
p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
ync:x:5:0:sync:/sbin:/bin/sync
hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
alt:x:7:0:halt:/sbin:/sbin/halt
ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
perator:x:11:0:operator:/root:/sbin/nologin
2,删除文件每行的第二个字符。
[[email protected] ~]# sed -i ‘s/. /\2/‘ test.txt
3,删除文件每行的最后一个字符。
sed -i ‘s/(.)(.*)$/ /‘ test.txt
4,删除文件每行的倒数第二个字符。

5,删除文件每行的第二个单词。

6,删除文件每行的倒数第二个单词。

7,删除文件每行的最后一个单词。

8,交换每行的第一个字符和第二个字符。

9,交换每行的第一个字符和第二个单词。

10,交换每行的第一个单词和最后一个单词。

11,删除一个文件中所有的数字。

12,删除每行开头的所有空格。

13,用制表符替换文件中出现的所有空格。

14,把所有大写字母用括号()括起来。
sed -r ‘s/[A-Z]/(&)/g‘ /etc/passwd
15,打印每行3次。

16,只显示每行的第一个单词。

17,打印每行的第一个单词和第三个单词。

18,用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式

时间: 2024-12-28 10:55:58

shell与正则表达式的相关文章

shell中正则表达式元字符

'.'    匹配任一字符 '*'   指定*前的字符可以连续重复使用任意次 '^'   字符串开头 '$'   字符串结尾 '.*'   任意数量的字符 '\'     转义字符 '[...]' 匹配任一字符 '[^...]' 不匹配任一字符,取反 '\(....\)'  标记匹配字符,后续通过转义序列进行引用,例如\(grep\).*\1,匹配2个grep中间带有任意数目的字符 '\n'  重复在\(...\) 内的第n个模式 x\{m,n\} 区间表达式,匹配x字符出现的次数区间.x\{n

Shell 编程 正则表达式

本篇主要写一些shell脚本正则表达式的使用基础. 概述 正则表达式分为基础正则表达式(Regular Expression)与扩展正则表达式(Extended Regular Expression). 它不是一个工具程序,而是一个字符串处理的标准依据,是使用单个字符串搜索.匹配一系列符合某个语法规则的字符串. 它由普通字符(a~z)以及特殊字符(元字符)组成. linux 文本处理工具 文本处理工具 基础正则表达式 扩展正则表达式 vi编辑器 支持 / grep 支持 / egrep 支持 支

shell 脚本-正则表达式

字符类 (Character Class):如上例的x 和y,它们在模式中表示一个字符 ,但是取值范围是 一类字 符中的任意一个. 数量限定符 (Quantifier): 邮件地址的每一部分可以有一个或多个 x字符 ,IP地址的每一部 分 可以有 1-3个y 字符 位置限定符 (Anchor):描述各种字符类以及普通字符之间的位置关系,例如邮件地址分三 部分,用普通字符 @和 .隔 开 ,IP地址分四部分 ,用 .隔开 ,每一部分都可以用字符类和数量限定符 描述.为了表示位置关系 ,需要位置限定

Linux学习-shell利用正则表达式验证邮箱合法性

引文:在今天这个时代,Email已经成为一种重要的通信方式.给导师发邮件,学术研究之间的交流,etc.常常用到Email,然而Email的验证却有点小难度,下面给出一个在Linux下使用shell脚本编写的一个实例. linux中将正则表达式和sed.gawk结合起来,功能非常强大.我说的是真的,没骗你的,好好学吧. 邮箱验证 Email地址的基本格式为: username@hostname 1.username部分模式匹配 username的值可以用字符数子字符以及以下特殊字符: 点号 单破折

shell及正则表达式

shell 表达式 -d file  是否存在而且为目录 -f file    文件是否存在,且为普通文件 -w file    文件是否存在且可写 -s file    文件是否存在且非空 -n string    字符串长度非0 string1=string2    字符串相等 -eq     等于 -gt      大于 -lt       小于 -e  file       文件是否存在 -r   file       文件是否存在且可读 -x   file        文件是否存在且

Shell 与正则表达式part1

1.什么是shell? shell代表两个层面的意思,一个是命令解释器,比如:BASH,另外一个是shell脚本(利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的.) 2.通配符是被shell解释的,由shell 负责预先先解析后,将处理结果传给命令行.  通配符------>用shell来解释的 3.元字符是被shell解释的. 4.正则表达式是由命令解释的.   g

Linux学习笔记:Shell基础正则表达式

Shell中经常用到正则表达式的命令包括grep.sed.awk 用于测试的文件内容 [[email protected] ~]# vi testfile Current Network Status Last Updated: Mon Feb 15 10:55:06 CST 2016 Updated every 90 seconds Nagios Core 4.1.1 - www.nagios.org Logged in as admin I like google It's Google, 

shell编程-正则表达式

1.正则表达式是什么 它主要用于字符串的模式分割,匹配,查找及替换操作. 2.正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则包含匹配.grep,awk,sed等命令可以支持正则表达式. 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls ,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符进行匹配了. 3.基础正则表达式 .相当于通配符的? [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{1,3\}\.[0-9]\

Linux Shell编程 - 正则表达式

一.基础正则表达式 1.正则表达式:正则表达式是用来在文件中匹配符号条件的字符串,正则是包含匹配 grep.awk.sed等命令可以支持正则表达式. 2.通配符:用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不之处正则表达式, 所以只能使用 shell 自己的通配符来进行匹配了. 3.基础正则表达式

Shell基本正则表达式和扩展正则表达式

BRE和ERE的区别 基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已. BRE: 只有^$.*[]是元字符 ERE: ^$.[]*+(){}?|都是元字符 BRE和ERE的元字符 参考:Shell正则表达式 示例 $echo "abcdefg" | grep 'a.+g' #不匹配任何字符串 $echo "abcdefg" | grep 'a.\+g' #匹配整个字符串 $echo "abcd