ssh 192.168.4.5
>提示continue,连接过的主机不会提示
>连接过的主机 文件存放位置:/root/.ssh/known_hosts

#####################################################################
字符串的截取:
# X=1383838438
# echo $X
1383838438
# echo ${X}
1383838438
# echo ${#X}
10

第一种
${var:起始位置:长度},从第0位开始
${X:0:4}
${X:3:6}
${X::4}

对下面的数随机取一为做随机密码:
# X=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
# n=$[RANDOM%62]     26小写字母+26大写字母+10个数字=62  
# echo ${X:$n:1}

X=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
pass=''
for i in {1..6}
do
  n=$[RANDOM%62]    #26小写字母+26大写字母+10个数字=62
  tmp=${X:$n:1}
  pass=${pass}$tmp
done
echo $pass

第二种
expr substr $变量 开始位 长度
# X=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
# expr substr $X 2 3      #从第1位开始数,没有第0位
bcd
# expr substr $X 1 3
abc

第三种
echo $变量|cut -b 开始位置-结束位置
echo $X |cut -b 2-5
echo $X |cut -b 3,8,11
########################################################################

vim 替换
    :s/old/new

# X=1383838438
# echo ${X/3/#}     /表示替换一个数,这里代表将第一个3替换成#
1#83838438
# echo ${X//3/#}    //表示替换所有的数,这里代表将所有的3替换成#
1#8#8#84#8
注意这种替换并不改变X变量的值
# echo $X
1383838438

掐头、去尾
${变量#}     掐头
${变量%}    去尾

# X=`head -1 /etc/passwd`
# echo $X
root:x:0:0:root:/root:/bin/bash
# echo ${X#*:}              一个#代表最短的*:内容  掐掉开头
x:0:0:root:/root:/bin/bash
# echo ${X##*:}             两个##代表最长的*:内容  掐掉开头
/bin/bash

# echo ${X%:*}              一个%代表最短的*:内容  去掉尾巴
root:x:0:0:root:/root
# echo ${X%%:*}             两个%%代表最长的*:内容  去掉尾巴
root

##############################################################
echo ${变量:开始:长度}    截取
echo ${变量/old/new}      替换
echo ${变量#}             掐头
echo ${变量%}             去尾
echo ${变量:-}             初始化

touch {a、b、c、d、e、f}.txt

批量重命名:将.txt改为.doc
for i in `ls *.txt`
do
   mv $i ${i%.*}.doc
done

###############################################################

数组:一个变量存多个值
X=(11 22 33 aa bb cc)
# echo ${X[0]}
11
# echo ${X[1]}
22
# echo ${X[4]}
bb
# echo ${X[*]}
11 22 33 aa bb cc

##############################################################
非交互式发送邮件
echo "内容" |mail       #不需要文件  
mail < 文件                       #需要另外一个文件,内容可以很复杂

yum -y install expect 非交互的工具expect
vim test.sh
mail -s error root << EOF    end of life
内容
内容
内容
......
EOF
#############################################################

#!/bin/bash
rm -rf /root/.ssh/known_hosts     #所有已经连接过的主机存储为这个位置,删掉后会>提示未连接过的主机,要不要继续远程登录
expect << EOF
spawn ssh 172.25.0.10
expect "continue" {send "yes\n"}
expect "passwd" {send "redhat\n"}
expect "#"      {send "touch /a.txt\n"}
expect "#"      {send "exit\n"}
EOF

3个问题
  1、continue的问题
rm -rf /root/.ssh/known_hosts     #所有已经连接过的主机存储为这个位置,删掉后会>提示未连接过的主机,要不要继续远程登录
    2、超时问题
set timeout
    3、最后一行不执行

####################################################################################
正则表达式:使用特殊符号去表达的一种方式
^   开始
$   结尾
[]   集合、取之一

[abcdef56789]==[a-f,5-9]==[5-9,a-f]
[abc]==[cba]==[bac]==[bca]==[cab]==[acb]

[^]   对集合内容取反
.      任意单个字符,同?
*     匹配前一个字符出现了任意次
.*    匹配任意长度的任意所有
\{n,m\}   匹配前一个字符出现了n到m次  
\{n,\}    匹配n个以上的(包括n个)
\{n\}     匹配n个   
        grep a\{3,5\} 匹配3到5个a; grep a\{3,\} 匹配3个以及3个以上的a; grep a\{3\} 匹配3个a

#####################################################################################
unset 变量    #清除变量的值
[a-Z]==[a-z,A-Z]

扩展正则表:(简化基本,扩展新的)
{2,5\}----------------->{2,5}
(\)                         ()
*任意次                   ? 前面的字符出现0次或1次
                               +  前面的字符出现至少1次
()整体                      (abc)+
                 abc  abccc  abccccc...
|或者                        (test|taste)

扩展正则:写的简单,兼容性差(支持正则的不一定支持扩展)
基本正则:写的麻烦,兼容性强(几乎所有支持正则的都支持)
 
grep不支持扩展正则  
egrep支持扩展正则
grep -E 扩展正则  用grep调用egrep来支持扩展正则

egrep "\bthe\b" txt   #\b代表单词边界
###################################################################################
\(\)      保留(复制)
()          保留(复制)
\1        将保留的第一个复制出来

vim a.txt
    abcdefabcdefabcdefabcdef
grep "(abcdef)\1\1\1" a.txt  将()里面的保留内容复制粘贴3遍  所有的字母都变红

vim a.txt
    abcdefabcdeffqwerfqwer
grep "(abcdef)\1(fqwer)\2" a.txt  将第一()里面的保留内容复制粘贴1遍;将第二()里面的保留内容复制粘贴1遍  所有字母都变红

vim a.txt
hello the world
ni hao ya
san li tun jian
把第一个字母和最后一个字母对调
sed -r 's/^(.)(.*)(.)$/\3\2\1/' a.txt
##################################################################################################

正则表达式练习

"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.
GNU is free air not free beer.
Her hair is very beauty.
I can't finish the test.
Oh! The soup taste good.
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh!    My god!
The gd software is a library for drafting programs.
You are the best is mean you are the no. 1.
The world <Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
# I am VBird

对上面的一段文字进行如下操作:

过滤下载文件中包含 the 关键字
过滤下载文件中丌包含 the 关键字
过滤下载文件中丌论大小写 the 关键字
过滤 test 或 taste 这两个单字
过滤有 oo 的字节
过滤丌想要 oo 前面有 g 的
过滤 oo 前面丌想有小写字节
过滤有数字的那一行
过滤以 the 开头的
过滤以小写字母开头的
过滤开头丌是英文字母
过滤行尾结束为小数点.那一行
过滤空白行
过滤出 g??d 的字串
过滤至少两个 o 以上的字串
过滤 g 开头和 g 结尾但是两个 g 之间仅存在至少一个 o
过滤任意数字的行
过滤两个 o 的字串
过滤 g 后面接 2 到 5 个 o,然后在接一个 g 的字串
过滤 g 后面接 2 个以上 o 的

参考答案

[root@desktop1 ~]# grep -n 'the' regular_express.txt
[root@desktop1 ~]# grep -vn 'the' regular_express.txt
[root@desktop1 ~]# grep -in 'the' regular_express.txt
[root@desktop1 ~]# grep -n 't[ae]st' regular_express.txt          # grep -n 't[ae]ste\{0,1\}'  regular_express.txt   这个命令更好
[root@desktop1 ~]# grep -n 'oo' regular_express.txt
[root@desktop1 ~]# grep -n '[^g]oo' regular_express.txt
[root@desktop1 ~]# grep -n '[^a-z]oo' regular_express.txt
[root@desktop1 ~]# grep -n '[^[:lower:]]oo' regular_express.txt
[root@desktop1 ~]# grep -n '[0-9]' regular_express.txt
[root@desktop1 ~]# grep -n '[[:digit:]]' regular_express.txt
[root@desktop1 ~]# grep -n '^the' regular_express.txt
[root@desktop1 ~]# grep -n '^[a-z]' regular_express.txt
[root@desktop1 ~]# grep -n '^[[:lower:]]' regular_express.txt
[root@desktop1 ~]# grep -n '^[^a-zA-Z]' regular_express.txt        #grep -n '^[^a-Z]' regular_express.txt     #grep -vn '^[a-zA-Z]' regular_express.txt

[root@desktop1 ~]# grep -n '^[^[:alpha:]]' regular_express.txt
[root@desktop1 ~]# grep -n '\.$' regular_express.txt
[root@desktop1 ~]# grep -n '^$' regular_express.txt
[root@desktop1 ~]# grep -n 'g..d' regular_express.txt
[root@desktop1 ~]# grep -n 'ooo*' regular_express.txt      # grep -n 'o\{2,\}' regular_express.txt    
[root@desktop1 ~]# grep -n 'goo*g' regular_express.txt   
[root@desktop1 ~]# grep -n 'goo*g' regular_express.txt
[root@desktop1 ~]# grep -n '[0-9][0-9]*' regular_express.txt
[root@desktop1 ~]# grep -n 'o\{2\}' regular_express.txt
[root@desktop1 ~]# grep -n 'go\{2,5\}g' regular_express.txt
[root@desktop1 ~]# grep -n 'go\{2,\}g' regular_express.txt    #正确为grep -n 'go\{2,\}' regular_express.txt  g后面接两个以上的o

注意!!#grep -n '^goo*g' regular_express.txt 表示以“g“开头的行 

              #grep -n 'goo*g$' regular_express.txt  表示以“*g“结尾的行

              #grep -n '^goo*g$^' regular_express.txt  表示以“g“开头且以“g“结尾,中间是至少两个o或两个o以上的行

转载于:https://www.cnblogs.com/baichuanhuihai/p/8133950.html

正则表达式的学习使用相关推荐

  1. 正则不能输入特殊字符_正则表达式语法学习和在线练习

    标题: 正则表达式语法学习和在线练习作者: 梦幻之心星 sky-seeker@qq.com标签: [#正则表达式,#语法,#学习,#练习]目录: [语法]日期: 2021-01-26 背景说明 正则表 ...

  2. JavaScript正则表达式的学习

    JavaScript正则表达式的学习 1. 正则表达式概述 1.1 什么是正则表达式 ​ 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式.在 JavaScrip ...

  3. 常用正则表达式及学习

    正则表达式教程 学习地址:https://www.runoob.com/regexp/regexp-tutorial.html 测试地址:https://tool.oschina.net/regex/ ...

  4. Lab3因而起——对正则表达式的学习(二)

    Lab3因而起--对正则表达式的学习(二) 一.Pattern和Matcher 一般来讲,比起String类,正则表达式的功能更为强大.对于正则表达式,可以通过java自带的包java.util.re ...

  5. Lab3因而起——对正则表达式的学习(一)

    Lab3因而起--对正则表达式的学习(一) 在本次lab3实验中的正则表达式部分,对于从没学过正则表达式的小伙伴来说,可以说是困难重重,而我恰好属于其中之一,课堂上对正则表达式的接触皮毛显然没能满足这 ...

  6. 正则表达式从零开始学习系列(一)

    正则表达式学习 -- 基本概念介绍     正则表达式,又称规则表达式.(英语:RegularExpression,在代码中常简写为regex.regexp或RE),计算机 科学的一个概念.正则表通常 ...

  7. Javascript正则表达式完全学习手册

    正则表达式看起来很吓人,不容易让人亲近,但它的确很好用,可以很大程度上提高你的开发效率.本文从零开始介绍了应如何学习正则表达式.文中范例主要为JavaScript. 正则表达式可以很恐怖,真得很恐怖. ...

  8. python中re_Python中re(正则表达式)模块学习

    今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从 ...

  9. python中re模块_Python中re(正则表达式)模块学习

    今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从 ...

  10. JAVA -- 正则表达式高级学习技巧

    什么是RE? 想必各位大大在做文件查找的时侯都有使用过万用字符"*",比如说想查找在Windows目录下所有的Word文件时,你可能就会用"*.doc"这样的方 ...

最新文章

  1. 2022-2028年中国降解塑料聚酯行业运行动态及投资机会分析报告
  2. ASP.NET Core2调用Azure云上的PowerBI报表展示
  3. c语言无限循环while(1)和for(;;)的区别
  4. 实例30:python
  5. 卡通自适应网址发布页源码
  6. scp 覆盖_SCP-002 - “生活”室
  7. 利用lz78编码实现对某字符序列的二元压缩_多媒体笔记(1):文件压缩的原理...
  8. android单个页面切换_Android基础之使用Fragment控制切换多个页面
  9. Win8 64位系统最简单的adb安装方法
  10. 服务器mac地址变了怎办_获取服务器的IP地址和MAC地址
  11. linux下分析prn文件,linux专题一之文件描述符、重定向、管道符、tee命令
  12. linux比windows丑,告别 Windows 难看难用,教你打造体验不输 macOS 和 Linux 的终端
  13. FDDB人脸检测测试集使用方法
  14. dw网页制作教程百度云盘_dreamweaver制作网页详细步骤(设计网站首页)
  15. 红帽6虚拟机安装流程
  16. 论文解读9——TabNet: Attentive Interpretable Tabular Learning
  17. 大数据时代对存储发展需要哪些要求
  18. Standard Deviation And Correlation
  19. vue中使用el-table调整行间距
  20. Uni-App从入门到实战

热门文章

  1. 项目背景一般写什么_项目申报整体框架规划思路,提高你的书写逻辑!
  2. ios布局 分为左右两块_安卓手机一年后卡顿,原因是安卓系统太开放了,改走iOS封闭之路...
  3. select * from data where 姓名_SQL基础where
  4. python主流编程语言_目前主流的编程语言有哪些?
  5. web集成axis2_AXIS2 Web服务教程
  6. SQL Drop数据库– MySQL,PostgreSQL,SQL Server
  7. iOS UISearchController和UITableView
  8. ActionContext保存客户提交的参数,session会话等
  9. Java面试题:String 和 StringBuffer、StringBuilder 的区别是什么?
  10. 一套提取自 Ant Design 的优质图标