shell字符串截取

Shell使用${}字符串处理

梦想与她 提交于 2020-01-31 08:27:11
[root@localhost ~]# var=12345678 //字符串长度 [root@localhost ~]# echo ${#var} 8 //截取字符串 ${parameter:offset} ${parameter:offset:length} [root@localhost ~]# echo ${var:4} 5678 [root@localhost ~]# echo ${var:4:2} 56 [root@localhost ~]# echo ${var:(-3):(-1)} 67 //替换字符串 格式:${parameter/pattern/string} [root@localhost ~]# echo ${var/123/888} 88845678 [root@localhost ~]# test="hello world world" [root@localhost ~]# [root@localhost ~]# echo ${test/world/} hello world [root@localhost ~]# echo ${test//world/} //patterm前面开头一个正斜杠为只匹配第一个字符串,两个正斜杠为匹配所有字符。 hello //字符串截取 ${parameter#word} # 删除匹配前缀 ${parameter#

Linux Shell常用技巧(五)

不打扰是莪最后的温柔 提交于 2020-01-28 19:25:40
十一. awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5 -= a = a - 5 a -= 5 *= a = a * 5 a *= 5 /= a = a / 5 a /= 5 %= a = a % 5 a %= 5 ^= a = a ^ 5 a ^= 5 /> awk '$1 ~ /Tom/ {Wage = $2 * $3; print Wage}' filename 该命令将从文件中读取,并查找第一个域字段匹配Tom的记录,再将其第二和第三个字段的乘积赋值给自定义的Wage变量,最后通过print命令将该变量打印输出。 /> awk ' {$5 = 1000 * $3 / $2; print}' filename 在上面的命令中,如果$5不存在,awk将计算表达式1000 * $3 / $2的值,并将其赋值给$5。如果第五个域存在,则用表达式覆盖$5原来的值。 我们同样也可以在命令行中定义自定义的变量,用法如下: /> awk -F: -f awkscript month=4 year=2011

Linux Shell常用技巧(五)

ⅰ亾dé卋堺 提交于 2020-01-28 04:53:15
十一. awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5 -= a = a - 5 a -= 5 *= a = a * 5 a *= 5 /= a = a / 5 a /= 5 %= a = a % 5 a %= 5 ^= a = a ^ 5 a ^= 5 /> awk '$1 ~ /Tom/ {Wage = $2 * $3; print Wage}' filename 该命令将从文件中读取,并查找第一个域字段匹配Tom的记录,再将其第二和第三个字段的乘积赋值给自定义的Wage变量,最后通过print命令将该变量打印输出。 /> awk ' {$5 = 1000 * $3 / $2; print}' filename 在上面的命令中,如果$5不存在,awk将计算表达式1000 * $3 / $2的值,并将其赋值给$5。如果第五个域存在,则用表达式覆盖$5原来的值。 我们同样也可以在命令行中定义自定义的变量,用法如下: /> awk -F: -f awkscript month=4 year=2011

python&C&Assembly 常见函数(持续更新)

 ̄綄美尐妖づ 提交于 2020-01-24 18:44:48
PYTHON range()函数 range(start,stop[,step]) 计数从start开始(默认为0),到stop结束(不包括stop),step为步长,默认为1 example: range(9):[0,1,2,3,4,5,6,7,8] range(1,11):[1,2,3,4,5,6,7,8,9,10] range(0,10,3):[0,3,6,9] range(0,-10,-1):[0,-1,-2,-3,-4,-5,-6,-7,-8,-9] int函数 class int(x,base=10) x--字符串或数字 base--进制数,默认为十进制(如何看x) 返回值:返回整型数据 字符串的截取 变量[头下标:尾下标],其中下标从0开始,可以是正数或负数,下标位置为空表示截取到头或尾,注意:列表右边的元素是不被包含的。 subprocess python中的subprocess模块定义了Popen类: class subprocess.Popen( args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines

shell基础使用

社会主义新天地 提交于 2020-01-18 12:31:15
2、shell 2.1、shell基础正则表达式 ​ 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。并规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式( Regular Expression ) 。 2.1.1、普通元字符 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“ n ”匹配字符“ n ”。“ \n ”匹配一个换行符。串行“ \\ ”匹配“ \ ”而“ \( ”则匹配“ ( ”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“ \n ”或“ \r ”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“ \n ”或“ \r ”之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo 能匹配“ z ”以及“ zoo ”。 等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“ zo+ ”能匹配“ zo ”以及“ zoo ”,但不能匹配“ z ”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“ do(es)?

shell字符串的用法

北城余情 提交于 2020-01-16 02:51:37
shell字符串的用法 注意:shell4.2和shell4.1会有差别,较低版本的shell可能不支持某些功能 获取字符串长度:${#string} 获取子串: 注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示) ${string:position} 从左边position开始到最后 ${string:position:length} 从position开始length个字符 ${string:begin:-end} 表示从左边begin个字符开始,到从右边end个字符结束 $(string:(-postion)) 如果使用负数,表示从positon处开始到最右边所有的字符;注意负数必须使用括号 $(string:(-postion):length) ${var:0-start:len} 从右边第几个字符开始以及字符的个数 ${var:0-start} 从右边第几个字符开始一直到结束 贪婪和非贪婪: var=http://www.aaa.com/123.htm # 号截取,删除左边字符,保留右边字符。 (非贪婪匹配) echo ${var#*/} 其中 var 是变量名,# 号是运算符,*/ 表示从左边开始删除第一个 / 号及左边的所有字符 即删除 http:/ 结果是 : /www.aaa.com/123.htm ## 号截取,删除左边字符,保留右边字符。

shell字符串操作记录

心不动则不痛 提交于 2020-01-15 18:59:52
记录干货: 一、判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 ${var=DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 ${var:=DEFAULT 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 ${var+OTHER} 如果var声明了, 那么其值就是$OTHER, 否则就为null字符串 ${var:+OTHER} 如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串 ${var?ERR_MSG} 如果var没被声明, 那么就打印$ERR_MSG ${var:?ERR_MSG} 如果var没被设置, 那么就打印$ERR_MSG ${!varprefix*} 匹配之前所有以varprefix开头进行声明的变量 ${!varprefix@} 匹配之前所有以varprefix开头进行声明的变量 二、字符串操作(长度,读取,替换) 表达式 含义 ${#string} $string的长度 ${string:position} 在 s t r i n g 中 , 从 位 置

Shell 参数扩展及各类括号在 Shell 编程中的应用

本秂侑毒 提交于 2020-01-07 09:30:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天看有人总结了 shell 下的参数扩展,但不是很全,恰好以前整理过放在百度空间,但百度空间目前半死不活的情况下对 Google 非常不友好,索性一并转过来方便查阅。 1、bash 中的 大括号参数扩展 (Parameter Expansion) 假设我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 1.1 bash 下的 split 取“数组”的首、尾: ${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt ${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt ${file##*.}:拿掉最后一个 . 及其左边的字符串:txt ${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3 ${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值) ${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file ${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my Tips: 记忆的方法为: #

Shell脚本入门-2

半腔热情 提交于 2020-01-07 08:38:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> (一)定义变量时,变量名不加美元符号($,PHP语言中变量需要) ,如: your_name="runoob.com" 注意, 变量名和等号之间不能有空格 ,这可能和你熟悉的所有编程语言都不一样。同时, 变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线, 首个字符不能以数字开头 。 中间不能有空格 ,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字 (可用help命令查看保留关键字)。 有效的 Shell 变量名示例如下: RUNOOB LD_LIBRARY_PATH _var var2 无效的变量命名: ?var=123 user*name=runoob 除了 显式地直接赋值,还可以用语句给变量赋值 ,如: for file in `ls /etc` 以上语句将 /etc 下目录的文件名循环出来 。 (二)使用变量 使用一个定义过的变量,只要在变量名前面加美元符号即可,如: your_name="qinjx" echo $your_name echo ${your_name} 变量名外面的花括号是可选的,加不加都行,加花括号是为了 帮助解释器识别变量的边界 ,比如下面这种情况: for skill in Ada Coffe Action Java; do echo "I

Shell 截取字符串

◇◆丶佛笑我妖孽 提交于 2019-12-25 03:09:44
转载自:https://www.cnblogs.com/fengbohello/p/5954895.html (作者:郝峰波 Linux Shell 截取字符串) 下文原创作者郝峰波,内容以及足够详细,我平常也经常参考,在此直接引用。 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var:start} ${var:0-start:len} ${var:0-start} 下面用几个例子展示一下: 1) 获得字符串的长度 语法: ${#var} 示例代码: str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string" echo "string : [${str}]" length=${#str} echo "length : [${length}]" 执行结果: string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string] length : [61] 2) 使用 # 和 ## 获取尾部子字符串 2.1) # 最小限度从前面截取word 语法: ${parameter#word} 示例代码: str="http://www