GNU sed

shell语法

情到浓时终转凉″ 提交于 2020-11-18 20:30:57
1 .特殊变量 $ 0 脚本自身名字 $ ? 判断执行是否成功 0为成功 非0为失败 $# 位置参数总数 $ * 所以位置参数被看做一个字符串 $@ 每个位置参数被看做独立字符串 $$ 显示当前的pid $ ! 上一条执行后台进程的PID 2 .shell字符串处理${} 1.1 获取字符串长度 A = ' zhangcaiwang ' echo $A 取长度: echo ${#A} 1.2 字符串切片 A = ' zhangcaiwang ' echo ${A: 0 : 5 } # 0 : 5 取值空间 echo ${A: 6 : 2 } #取6个字符串后两个 echo ${A:(- 1 )} #截取最后一个字符串 echo ${A:(- 3 ): 2 } #截取后三个字符串的两个字符 1.3 替换字符串 格式${parameter/pattern/ string } A = ' zhang cai wang ' echo ${A/cai/ wang} 全部替换 echo ${A // cai/wang} 正则匹配字符串 var = 123abc echo ${var // [^0-9]/} echo ${var // [0-9]/} 1 .4字符串截取 #去掉左边 最短匹配模式 ##最长匹配模式 %去掉右边 最短匹配模式 %% 最长匹配模式 URL = " http://www

centos7.6 安装Mysql5.7

白昼怎懂夜的黑 提交于 2020-11-16 00:40:35
#安装Mysql wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm yum localinstall mysql57-community-release-el7-8.noarch.rpm yum repolist enabled | grep "mysql.*-community.*" yum install mysql-community-server systemctl start mysqld systemctl status mysqld systemctl enable mysqld cp /etc/my.cnf /etc/my.cnf_`date +%Y%m%d%H%M%S` MYSQL_PASS=$(/usr/bin/grep 'temporary password' /var/log/mysqld.log | /usr/bin/grep 'root@localhost:' | /usr/bin/sed 's/^.*root@localhost: //g') echo $MYSQL_PASS mysql -uroot -p$MYSQL_PASS # mysql修改安全策略 # 修改策略项 # set global validate_password_policy=0; #

一分钟了解负载均衡的一切

故事扮演 提交于 2020-11-14 11:18:58
什么是负载均衡 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。 常见的负载均衡方案 常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问每一个下游,就能实现“将请求/数据【均匀】分摊到多个操作单元上执行”。 【客户端层->反向代理层】的负载均衡 【客户端层】到【反向代理层】的负载均衡,是通过“DNS轮询”实现的:DNS-server对于一个域名配置了多个解析ip,每次DNS解析请求来访问DNS-server,会轮询返回这些ip,保证每个ip的解析概率是相同的。这些ip就是nginx的外网ip,以做到每台nginx的请求分配也是均衡的。 【反向代理层->站点层】的负载均衡 【反向代理层】到【站点层】的负载均衡,是通过“nginx”实现的。通过修改nginx.conf,可以实现多种负载均衡策略: 1)请求轮询:和DNS轮询类似,请求依次路由到各个web-server 2)最少连接路由:哪个web-server的连接少,路由到哪个web-server 3)ip哈希:按照访问用户的ip哈希值来路由web-server,只要用户的ip分布是均匀的,请求理论上也是均匀的

nl /etc/passwd | sed -n '/home/p'

不问归期 提交于 2020-11-13 10:57:58
注意这俩 / 一定要写 -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。 -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。 -h或--help 显示帮助。 -n或--quiet或--silent 仅显示script处理后的结果。 -V或--version 显示版本信息。 来源: oschina 链接: https://my.oschina.net/u/3847203/blog/4715377

nl /etc/passwd | sed &apos;2,5d&apos;

时光怂恿深爱的人放手 提交于 2020-11-13 10:51:57
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; sed '2,5d' (删除第2-5行) i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦! 来源: oschina 链接: https://my.oschina.net/u/3847203/blog/4715345

如何从Bash变量中修剪空格?

纵然是瞬间 提交于 2020-11-08 18:54:53
问题: I have a shell script with this code: 我有一个带有以下代码的shell脚本: var=`hg st -R "$path"` if [ -n "$var" ]; then echo $var fi But the conditional code always executes, because hg st always prints at least one newline character. 但是条件代码总是执行,因为 hg st 总是打印至少一个换行符。 Is there a simple way to strip whitespace from $var (like trim() in PHP )? 有没有一种简单的方法可以从 $var 删除空格(如 PHP中的 trim() )? or 要么 Is there a standard way of dealing with this issue? 有没有解决此问题的标准方法? I could use sed or AWK , but I'd like to think there is a more elegant solution to this problem. 我可以使用 sed 或 AWK ,但是我想认为有一个更优雅的解决方案。 解决方案: 参考一: https:/

CentOS下利用mailx发送邮件

耗尽温柔 提交于 2020-11-06 07:57:21
Linux服务器运维过程中需要监控系统状况并自动报警,有时有邮件报警的需要,一般Linux发送报警邮件可以通过本地邮箱或外部邮箱服务器,这里用最简单的方法:利用mailx一个小型的邮件发送程序使用外部邮箱即可实现发送邮件功能 1、CentOS服务器默认安装了mailx 若没有安装,使用yum install mailx进行安装 2、vi编辑mail的配置文件/etc/mail.rc set from=xxxxxx@qq.com set smtp=smtps://smtp.qq.com:465 set smtp-auth-user=xxxxxx@qq.com set smtp-auth-password= 你的QQ邮箱授权码 set smtp-auth=login #set smtp-use-starttls 这里是不需要配置的,很多地方没说明,配置了反而会验证失败,所以注释掉; set ssl-verify=ignore set nss-config-dir=/root/.certs QQ邮箱的授权码并非QQ邮箱密码 关于邮箱授权码的说明参考官方帮助文档: https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28 3、还需要添加邮箱证书到本地 # 创建证书目录 [root@localhost ~]#

Linux 基础正则表达式和扩展正则表达式

大城市里の小女人 提交于 2020-11-06 07:20:15
基础正则表达式: ^ 第1个符号 ,以什么什么开头 ^m $ 第2个符号,以什么什么结尾 m$ ,还表示空行,或空格,可以用cat -An 试一下 ^$ 第3个符号,空行 什么符号都没有 . 第4个符号,表示任意 “一个字符” \ 第5个符号, 转义字符不解析特殊符号的含义 , \n 相当于回车键 , \t 相当于tab键 * 第6个符号,表示前一个字符连续出现了0次或0次以上 .* 第7个符号,表示任意字符,包括空行,正则表达式表示所有或连续出现的。 [ ] 第8个符号,中括号,中括号内每次查找一个字符。 [^] 第9个符号,[^acb] , 表示排除 a,b,c 扩展正则表达式: + 第10个符号,表示前一个字母连续出现1次或1次以上 扩展正则表达式: + 第10个符号,表示前一个字母连续出现1次或1次以上 | 第11个符号,(竖线)表示 " 或者 " 的意思 () 第12个符号,(小括号)表示一个整体 反向引用 / 后向引用 例如:sed -r 's#(..)(..)(..)#\1<(\2)>\3#g' ##后向引用 {} 第13个符号,{n,m} 前一个字符至少连续出现N次,最多连续出现m次 a{1,10} ##表示 a最少连续出现1次,最多连续出现10次 grep 参数: -E 等于 egerp -n 显示行号 -i 不区分大小写 -o 只输出匹配的内容 sed 参数:

linux正则表达式(基础正则表达式+扩展正则表达式)

只谈情不闲聊 提交于 2020-11-06 06:28:15
正则表达式应用非常广泛,例如:php,Python,java等,但在linux中最常用的正则表达式的命令就是grep(egrep),sed,awk等,换句话 说linux三剑客要想能工作的更高效,就一定离不开正则表达式的配合。 1、什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法。通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤、替换或者输出需要的字符串。linux正则表达式一般以行为单位处理的。 2、为什么要学正则表达式 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要从大量的字符串内容中查找符合工作需要的特定字符串,这就要靠正则表达式,因此,可以说正则表达式就是为过滤这样字符串的需求而生的! 3、容易混淆的两个注意事项: 1)linux正则表达式一般是以行为单位处理的。 2)正则表达式和我们常用的通配符特殊字符是有本质区别的,例如:ls *.txt 这里的*就是通配符(表示所有),不是正则表达式。 注意字符集问题: 确保字符集:export LC_ALL=C --------------------------------------------- 基础正则表达式+扩展正则表达式含义解释: -----------------------------

20200928今天反思---自己真正追求的是什么?

纵然是瞬间 提交于 2020-11-01 14:35:48
今天老男孩openstack老师讲解cinder 让我觉得熟练linux是多令人羡慕 以后别玩王者了 提高自己技能吧 老师dd命令,awk命令,sed命令信手拈来,牛! find /var/log/ -type f | awk '{print ">"$0}' | bash 情况当前日志 find /var/log/ -type f | xargs grep -i error 查看生成的日志中带有error信息的 真正厉害不是看你王者游戏段位多高,而是你脑子里面的知识点,打字盲打的速度,这些才是你需要去追求的厉害! 今天起28岁了!!! 来源: oschina 链接: https://my.oschina.net/u/4392911/blog/4653906