本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
shell:awk筛选出文本中指定列字符串长度为指定长度的行$num=2awk -v x=$num '{if(length($2)<=x){print $0}}' text.txt#在text.txt中筛选出第二列字符串长度小于等于2的行#其中在中文的一个汉字长度为3
 
0
shell 8种字符串截取方法假设有变量 var=http://www.aaa.com/123.htm.1. # 号截取,删除左边字符,保留右边字符。1echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.aaa.com/123.htm2. ## 号截取,删除左边字符,保留右边字符。1echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符即删除 http://www.aaa.com/结果是 123.htm3. %号截取,删除右边字符,保留左边字符1echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符结果是:http://www.aaa.com4. %% 号截取,删除右边字符,保留左边字符1echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符结果是:http:5. 从左边第几个字符开始,及字符的个数1echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。结果是:http:6. 从左边第几个字符开始,一直到结束。1echo ${var:7} 其中的 7 表示左边第8个字符开始,一直到结束。结果是 :www.aaa.com/123.htm7. 从右边第几个字符开始,及字符的个数1echo ${var:0-7:3}&nbs...
有的时候需要对文件执行删除删除操作,这个时候比较常用的会使用vi命令中的dd命令,比如先执行10G(跳转到第10行),然后再执行20dd(删除20行),但实际情况未必是这么常规,比如说,要删除文件中,某行长度超过200个字符的行,如果文本比较小,还好,如果是几万行,几十万行的呢? 这个想用vi就不现实了。 我然想到的办法就是:比如说,通过sed,awk,egrep命令来达到目的。 举个简单例子。假如说如下文本文件,要将其中长度为5字符以上的给删除掉。root@linux# cat data 1 22 333 4444 55555 666666 7777777 88888888 方法一: 使用awk命令的length()函数root@linux# cat data | awk '{if (length($0) <=4 ) print $0}' 1 22 333 4444 方法二: 使用grep命令 root@linux# cat data | egrep -w '^.{1,4}' 1 22 333 4444 方法三: 使用sed命令root@linux# cat data | sed -n '/^.\{5,\}/!w NewFile' root@linux# cat NewFile 1 22 333 4444备注:1. 使用awk,grep命令的时候,可以将处理好的文件重定向到另外一个新文件中2. egrep -w参数,表示仅跟模式匹配的单词3. ^. 表示以任意字符开头的行,这个和-w命令匹配使用,这个很关键,否...
 
0

Linux Shell 函数

发表者:admin分类:Shell脚本2020-10-15 16:09:25 阅读[984]
Shell 函数linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下:[ function ] funname [()] { action; [return int;] }说明:1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255下面的例子定义了一个函数并进行调用:#!/bin/bash # author:菜鸟教程 # url:www.runoob.com demoFun(){ echo "这是我的第一个 shell 函数!" } echo "-----函数开始执行-----" demoFun echo "-----函数执行完毕-----"输出结果:-----函数开始执行----- 这是我的第一个 shell 函数! -----函数执行完毕-----下面定义一个带有return语句的函数:#!/bin/bash # author:菜鸟教程 # url:www.runoob.com funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum ...
 
0
Using Loops (while, for) in awk scripts,AWK中使用 while,for 循环 The awk programming language contains many of the programming concepts that are used in shell scripting. Conditionals, such as the if statement and loops, such as the following can also be used in awk programming.The while loopThe do while loopThe for loopThe if StatementThe if statement can have two branches: an if branch and an else branch. If the condition is true, the if branch is executed; if the condition is false, the else branch is executed.if (condition) { statements } else { statements }You can nest if statements. When examining nested if statements and one or more of the if statements has an else statement, it is difficult to know with which if the else is operating. The simple rule is: Each else works on the closest if that does not yet have its own else; for example:if (condition) { if (condition) { statements } else { statements } }In th...
 
0

Shell 基本运算符

发表者:admin分类:Shell脚本2020-06-01 15:21:42 阅读[1163]
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...
    总共5页,当前第2页 | 页数:
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5