本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
 
0

Shell 基本运算符

发表者:admin分类:Shell编程2020-06-01 15:21:42 阅读[326]
Shell 基本运算符Shell 和其他编程语言一样,支持多种运算符,包括:算数运算符关系运算符布尔运算符字符串运算符文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):实例#!/bin/bashval=`expr 2 + 2`echo "两数之和为 : $val"运行实例 »执行脚本,输出结果如下所示:两数之和为 : 4两点注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。算术运算符下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:运算符说明举例+加法`expr $a + $b` 结果为 30。-减法`expr $a - $b` 结果为 -10。*乘法`expr $a \* $b` 结果为  200。/除法`expr $b / $a` 结果为 2。%取余`expr $b % $a` 结果为 0。=赋值a=$b 将把变量 b 的值赋给 a。==相等。用于比较两个数字,相同则返回 true。[ $a == ...
simple-log博客程序转换成zblog后,关于mysql数据库中的文章内容HTML转义字符的处理方法  先是将博客数据中的 blog表中的title,content,blog_id,cat_id,user_id,add_tim,views等能用的数据,可以先出来,作个csv或是xls表格,再添加相应的字段与数据到表格中,最后导入到zblog中的zbp_post表中。 这里访问博客文章,发现全是HTML代码,因为文章内容存到数据库时作了字符转义,解决方法只能采取1,修改php程序,显示文章时作字符转义。2,在表中将log_content字段中的内容替换掉。 我这里只会采用第二种了。Mysql代码替换HTML转义字符,具体如下: UPDATE zbp_post pSET p.log_Content = REPLACE (log_Content, '&lt;', '<'), p.log_Content = REPLACE (log_Content, '&gt;', '>'), p.log_Content = REPLACE (log_Content, '&amp;', '&'), p.log_Content = REPLACE (log_Content, '&quot;', '"')WHEREp.log_ID <> '2181'AND (p.log_Content LIKE '%&lt;%'OR p.log_Content LIKE '%&gt;%'OR p.log_Content LIKE '%&amp;%'OR p.log_Content LIKE '%&quot;%') 运行命令后,发现除...
sed 替换匹配开头字符的行配置文件/etc/config.txt中有一行是version=xx.xx.xx每次进行版本发布,需要重新填写这个值,可以用shell脚本中,加入sed命令来完成新版本号的替换#首先定义一个新版本号的变量var="version=6.1.1"sed -i '/^version=/c'$var'' /etc/config.txti :直接修改读取的文件内容,而不是输出到终端。^表示一行的开头sed匹配某一行开头,替换整行内容sed -i '/^cloud_server/ccloud_server_ip = update' name.txt[root@centos8-38 opt]# cat sed.txt coud_server xxdfdkjjjj1111 3333coud_server 3333coud_server dddd 3333[root@centos8-38 opt]# coud="cloud_server=1111"[root@centos8-38 opt]# [root@centos8-38 opt]# sed  '/^coud/c'$coud'' sed.txt cloud_server=1111cloud_server=1111cloud_server=1111sed 匹配部分替换[root@centos8-38 opt]# sed  's/dddd/gggg/g' sed.txt coud_server xxdfdkjjjj1111 3333coud_server 3333coud_server gggg 3333sed 匹配行中部分内容,替换整行[root@centos8-38 opt]# sed  '/.*dddd.*/c'$coud'' sed.txt coud_server xxdfdkjjjj1111 3333coud_server 3333cloud_server=111...
shell添加字符到指定行的行首或行尾使用sed 命令给匹配行的行首或行尾添加字符。比如给ansible中的匹配以35结束的行尾添加端口号,使用以下命令解决。[root@k8s ~]# sed 's/35$/&\ ansible_ssh_port=8080/g' -i /etc/ansible/hosts[root@k8s ~]# [root@k8s ~]# cat /etc/ansible/hosts |tail -3[92cto]149.129.94.35 ansible_ssh_port=8080用sed命令在行首或行尾添加字符的命令有以下几种:假设处理的文本为test.file在每行的头添加字符,比如"HEAD",命令如下:sed 's/^/HEAD&/g' test.file在每行的行尾添加字符,比如“TAIL”,命令如下:sed 's/$/&TAIL/g' test.file运行结果如下图:几点说明:1."^"代表行首,"$"代表行尾2.'s/$/&TAIL/g'中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了,否则只会替换每行第一个,而不继续往后找了例:3.如果想导出文件,在命令末尾加"> outfile_name";如果想在原文件上更改,添加选项"-i",如4.也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/;s/$/...
可直接复制到/etc/init.d/tomcat ,添加执行权限,使用service tomcat restart 启动#!/bin/bash### BEGIN INIT INFO# Provides:          tomcat# Required-Start:    $remote_fs $syslog# Required-Stop:     $remote_fs $syslog# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description: tomcat-server daemon# Description:       tomcat-server daemon### END INIT INFO## chkconfig: - 95 15# description: Tomcat start/stop/status script export JAVA_HOME=/usr/local/jdkexport JRE_HOME=/usr/local/jdk/jreexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH #CATALINA_HOME is the location of the configuration files of this instance of TomcatCATALINA_HOME=/usr/local/tomcat #TOMCAT_USER is the default user of tomcatTOMCAT_USER=root #TOMCAT_USAGE is the message if this script is called without any optionsTOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus...
服务器放于防火墙后内网中,一直收集信息与日志比较复杂,手动巡检太慢,于是搞个脚本定时收集硬件,网络,系统与应用的错误信息,关于阵列卡的日志,开始一直使用单条命令来将日志转到别的地方,但是在脚本运行时将输出转到别的文件中,一直报错,脚本没法运行,于是采用这种方法,就可以将内容输出到别的文件了。/opt/MegaRAID/storcli/storcli64 -FwTermLog -Dsply -aALL | grep -E ^`date +%D -d ' -1 day'`\|^`date +%D` |grep -E 'error|Error|Err|failure' > /var/log/raid_log.txtif [ -s /var/log/raid_log.txt ]then  echo "主机RAID日志错误日志:"  cat /var/log/raid_log.txt  echo ""fi
 
0

常用正则表达式

发表者:admin分类:Shell编程2018-11-21 10:28:56 阅读[1414]
一、校验数字的表达式数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$ 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$ 有1~3位小数的正实数:^[0-9]+(\.[0-9]{1,3})?$ 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 非负整数:^\d+$ 或 ^[1-9]\d*|0$ 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮点数:^(...
 
0
正则表达式 - 匹配规则基本模式匹配一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如:^once这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串。例如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"不匹配。正如如^符号表示开头一样,$符号用来匹配那些以给定模式结尾的字符串。bucket$这个模式与"Who kept all of this cash in a bucket"匹配,与"buckets"不匹配。字符^和$同时使用时,表示精确匹配(字符串与模式一样)。例如:^bucket$只匹配字符串"bucket"。如果一个模式不包括^和$,那么它与任何包含该模式的字符串匹配。例如:模式once与字符串There once was a man from NewYork Who kept all of his cash in a bucket.是匹配的。在该模式中的字母(o-n-c-e)是字面的字符,也就是说,他们表示该字母本身,数字也是一样的。其他一些稍微复杂的字符,如标点符号和白字符(空格、制表符等),要用...
    总共5页,当前第1页 | 页数:
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5