shell脚本的字符串截取

2019-03-11 00:44|来源: 网络

以变量 var=http://www.google.com/test.htm为例,讲解shell截取字符串的方法


一 # 号截取,删除左边字符,保留右边字符。

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个字符开始,一直到结束。

结果是 :www.google.com/test.htm

七 从右边第几个字符开始,及字符的个数

echo ${var:0-7:3}

其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。

结果是:test

八 从右边第几个字符开始,一直到结束。

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。

结果是:test.htm

注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)


转自网络


相关问答

更多
  • 作了一个通用的Form,如下所示。REPORTZGANG_STR1LINE-SIZE 150LINE-COUNT 50.* MESSAGE-ID .data: M type string.DATA: M1TYPE string.DATA V_NO TYPE I.data v_no1 type i.DATA V_CHAR(1) TYPE C.DATA V_STRING1 TYPE string.data v_len type i.data v_string type string.M = '12.0/34.5 ...
  • 字符串的截取[2022-04-02]

    name = Add&999.split('&')[0] Number=Add&999.split('&')[1]
  • filename=/mnt/1111 echo ${filename##*/} 1111
  • while read p; do x=$(echo $p|cut -d'|' -f1) y=$(echo $p|cut -d'|' -f2) echo $x echo $y done 评论0 0 0 加载更多
  • 如果单纯针对你要的这个字符串,可以这样: var ss = s.split('\\');//s就是原来的字符串,'\'存在转义,要用'\\'代替 ss[1]就是'123.jpg'了
  • @echo off set "str=C:\Program Files (x86)\360Apps\Green\10101010\abc" for /f "delims=" %%i in ("%str%") do (echo %%~dpi) pause变量为一个完整路径用for 命令很容易处理.
  • CSTring有个函数叫GetAt() 就是获取某个位置的字符 应该可以实现楼主需要的功能 更多惊喜 请查看MSDN
  • {$string|truncate_cn:"10":"..."} 第一个为截取的字符长度,第二个为后缀字符
  • using System; using System.Collections.Generic; using System.Text; namespace TestCA { class Program { static void Main(string[] args) { string str = "_TitleStr_KeyStr_CommnetStr_DeacStr"; //如果字符串首字符是用来截取字符串的那个字符,那么把他去掉,不然会多截取一个空值 if (str.IndexOf("_") == 0) ...
  • {“Xm”:“李明”,“Dh”:“123456”,“Nl”:“30”}这是个JSON串,在序列化后,可以得到值。你可以使用System.Web.Script.Serialization.JavaScriptSerializer类来完成任务。也可以利用第三方工具比如:Newtonsoft.Json.dll等,来完成任务。 如何使用System.Web.Script.Serialization.JavaScriptSerializer类或第三方工具,网上有大量代码,或参阅微软在线帮助。这里就不贴了。