shell字符串截取

linux中shell,awk,sed截取字符串方法总结

我是研究僧i 提交于 2019-12-25 03:09:27
Shell 第一种: ${parameter%word} 最小限度从后面截掉word ${parameter%%word} 最大限度从后面截掉word ${parameter#word} 最小限度从前面截掉word ${parameter##word} 最大限度从前面截掉word word可以是一个具体的字符串,也可以是一个模式字符串。 例子: str='http://www.你的域名.com/cut-string.html' echo ${str%/*} 结果:http://www.你的域名.com echo ${str%%/*} 结果:http: echo ${str#*//} 结果:www.你的域名.com/cut-string.html echo ${str##*/} 结果:cut-string.html 第二种: ${variable:n1:n2}:截取变量variable从左边起索引n1开始的n2个字符。n1表示索引,索引从0开始;n2表示截取的字符个数。 变种如下: ${variable:n1}:截取变量variable从左边起索引n1开始的所有字符。 ${variable:0-n1:n2}:截取变量variable从右边起第n1个字符开始的n2个字符。 ${variable:0-n1:n2}:截取变量variable从右边起第n1个字符开始的所有字符。 例子:

Linux shell脚本的字符串截取

眉间皱痕 提交于 2019-12-25 03:09:07
假设有变量 var=http://www.google.com/test.htm 一 # 号截取,删除左边字符,保留右边字符。 echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 : www.google.com/test.htm 二 ## 号截取,删除左边字符,保留右边字符。 echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 http://www.google.com/ 结果是 test.htm 三 %号截取,删除右边字符,保留左边字符 echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符 结果是: http://www.google.com 四 %% 号截取,删除右边字符,保留左边字符 echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符 结果是:http: 五 从左边第几个字符开始,及字符的个数 echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。 结果是:http: 六 从左边第几个字符开始,一直到结束。 echo ${var:7} 其中的 7 表示左边第8个字符开始,一直到结束。

shell截取字符串

两盒软妹~` 提交于 2019-12-25 03:08:59
Linux 的字符串截取很有用。有八种方法。 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符。 复制代码 代码如下: echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.aaa.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符。 复制代码 代码如下: echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 http://www.aaa.com/ 结果是 123.htm 3. %号截取,删除右边字符,保留左边字符 复制代码 代码如下: echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符 结果是:http://www.aaa.com 4. %% 号截取,删除右边字符,保留左边字符 复制代码 代码如下: echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符 结果是:http: 5. 从左边第几个字符开始,及字符的个数 复制代码 代码如下: echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。 结果是

shell脚本字符串截取

徘徊边缘 提交于 2019-12-25 03:08:51
假设有变量 var=http://www.google.com/test.htm 一 # 号截取,删除左边字符,保留右边字符。 echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 : www.google.com/test.htm 二 ## 号截取,删除左边字符,保留右边字符。 echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 http://www.google.com/ 结果是 test.htm 三 %号截取,删除右边字符,保留左边字符 echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符 结果是: http://www.google.com 四 %% 号截取,删除右边字符,保留左边字符 echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符 结果是:http: 五 从左边第几个字符开始,及字符的个数 echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。 结果是:http: 六 从左边第几个字符开始,一直到结束。 echo ${var:7} 其中的 7 表示左边第8个字符开始,一直到结束。

Linux Bash Shell字符串截取

为君一笑 提交于 2019-12-25 03:08:36
#!/bin/bash #定义变量赋值时等号两边不能有空格,否则会报命令不存在 # 运行shell脚本两种方式 # 1、作为解释参数 /bin/sh test.sh ; 2、作为可执行文件 chmod +x ./test.sh blog_url='http://www.cnblogs.com/Bighua/p/7535900.html' # 1、 #号截取,从左往右删除从0开始到第一个匹配条件('//')部分,保留剩下部分 echo ${blog_url#*//} #运行结果 如下 www.cnblogs.com/Bighua/p/7535900.html #2、 ##号截取,从左往右删除从0开始到最后一个匹配条件('/')部分,保留剩下部分 echo ${blog_url##*/} #运行结果如下 7535900.html #3、 %号截取,从右往左删除从#blog_url开始到第一个匹配条件('/')部分,保留剩下部分 echo ${blog_url%/*} # 运行结果如下 http://www.cnblogs.com/Bighua/p #4、 %%号截取,从右往左删除从#blog_url开始到最后一个匹配条件('/')部分,保留剩下部分 echo ${blog_url%%/*} # 运行结果如下 http: #5、从左边第几个开始截取几个字符 echo ${blog_url

linux awk(good)

我只是一个虾纸丫 提交于 2019-12-16 22:22:56
一个用awk处理字符串的例子: #!/bin/bash source="nokia201703148855" preffixStr=$(echo $source |awk '{print substr($0,0,13);}') echo "preffixStr:"$preffixStr suffixNum=$(echo $source |awk '{print substr($0,13,4);}') echo "suffixNum:"$suffixNum echo $preffixStr$(($suffixNum+1)) 要点分析: 接收awk处理后的结果: preffixStr=$(echo $source |awk '{print substr($0,0,13);}') echo "preffixStr:"$preffixStr http://www.unix.com/shell-programming-and-scripting/173237-awk-take-variables-out-shell.html 加法运算: $(($suffixNum+1)) http://www.360doc.com/content/11/0921/17/834950_150153766.shtml $()${}的用法: 在 bash shell 中,$( ) 与 ` ` (反引号)

shell 随笔

╄→尐↘猪︶ㄣ 提交于 2019-12-09 12:26:05
Shell 变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 有效的 Shell 变量名示例如下: RUNOOB LD_LIBRARY_PATH _var var2 无效的变量命名: ?var=123 user*name=runoob 除了显式地直接赋值,还可以用语句给变量赋值,如: for file in `ls /etc` 或 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 am good at ${skill

Linux shell脚本

◇◆丶佛笑我妖孽 提交于 2019-12-08 20:39:29
1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: 3 可以在shell脚本中使用哪些类型的变量? 答:在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“ set ”命令查看。 用户变量由系统用户来生成和定义,变量的值可以通过命令“ echo $<变量名> ”查看。 4 如何将标准输出和错误输出同时重定向到同一位置? 答:这里有两个方法来实现: 方法一: 2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) 方法二: &> (# ls /usr/share/doc &> out.txt ) 5 shell脚本中“if”语法如何嵌套? 答:基础语法如下: 6 shell脚本中“$?”标记的用途是什么? 答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功

Shell字符串截取(非常详细)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 00:08:10
Shell 截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取。 从指定位置开始截取 这种方式需要两个参数:除了指定起始位置,还需要截取长度,才能最终确定要截取的字符串。 既然需要指定起始位置,那么就涉及到计数方向的问题,到底是从字符串左边开始计数,还是从字符串右边开始计数。答案是 Shell 同时支持两种计数方式。 1) 从字符串左边开始计数 如果想从字符串的左边开始计数,那么截取字符串的具体格式如下: ${string: start :length} 其中,string 是要截取的字符串,start 是起始位置(从左边开始,从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)。 例如: url = "c.biancheng.net" echo ${ url : 2 : 9 } 结果为 biancheng 。 再如: url = "c.biancheng.net" echo ${ url : 2 } #省略 length,截取到字符串末尾 结果为 biancheng.net 。 2) 从右边开始计数 如果想从字符串的右边开始计数,那么截取字符串的具体格式如下: ${string: 0-start :length} 同第 1) 种格式相比,第 2) 种格式仅仅多了 0- ,这是固定的写法,专门用来表示从字符串右边开始计数。

shell 基本语法

喜夏-厌秋 提交于 2019-12-05 09:27:58
shell 基本语法 jenkins 上构建项目时,经常需要借助 shell 脚本,最近也经常跟服务器打交道,顺便记录些常用命令,方便查阅 语法-变量 # 定义变量 name='dasu' # 使用变量 echo $name # dasu echo "I am ${name}." # I am dasu. xxx='dasu' 用 key=value 形式定义变量, = 等号两边不能有空格 $xxx 或 ${xxx} 变量名前加个 $ 使用变量,大括号省略也可以 语法-字符串 # 字符串使用 name='dasu' name2="dasu" name3=dasu echo "$name $name2 $name3" # dasu dasu dasu # 字符串长度 echo ${#name} #4 # 注意,shell 里都是命令 'dasu' # dasu: command not found # 获取子字符串 echo ${name:0:2} # da # 寻找字符 echo `expr index $name s` # 3 下标从1开始 'dasu' "dasu" dasu 单引号 、 双引号 、甚至 不加引号 都会被作为字符串使用 单引号里的字符串不做任何处理工作,是什么就原样输出 双引号里如果有表达式、有转义符,有变量,会先进行处理,最后再输出,所以字符串的拼接