Linux下字符串的截取

来源:互联网 发布:阿里云蜘蛛池 编辑:程序博客网 时间:2024/06/06 09:14

第一种方法:利用键盘上#$%三个键之间的前后关系

${varible##*string}  从左向右截取最后一个string后的字符串

${varible#*string}  从左向右截取第一个string后的字符串

${varible%%string*}  从右向左截取最后一个string后的字符串

${varible%string*}  从右向左截取第一个string后的字符串



eg:

wKioL1domrnTwCl8AAA--lJeCYo908.png


从末尾除去特定子字符串,不必使用"*"字符串

eg:

wKiom1domuvRRK3UAAAfCYCcLwU096.png



第二种方法:${varible:start:length}截取从下标start开始的length个字符串

eg:

wKioL1domzWTKuxFAAAeSAjEwb4033.png


得到字符串长度:echo ${#varible}

eg:

wKioL1dom1bSMxQXAAARC0LGRNw501.png

或者expr length "$varible"

wKioL1dom32A2DhrAAAJhTayuVM586.png



实例:

运行之前,需要输入命令chmod 755 mystr_cut.sh生成可执行文件

wKiom1dom6bDTA2eAABEYl-fcek226.png

${1##*.}——>$1是传给脚本的第一个命令行自变量,$2是传给脚本的第二个命令行自变量,以此类推




第三种方法:运用工具cut

cut命令用于从文件或标准输入中读取内容并截取每一行的特定部分,发送到标准输出

截取方式:

1.按字符位置

2.按字节位置

3.使用一个分隔符将一行分割成多个field,并提取指定的fields


cut命令有5个参数(-c,-b,-f,-d,-s)

截取方式:

-c:character

-b:byte

-f:field(需用 -d 参数指定一个分隔符,分隔符只能为单个字符)

-s:suppress,表示如果行中没有给出的分隔符,则不输出该行

注:默认为如果没有分隔符则将该行原封不动输出

eg:

1.

    -c 实例

wKiom1dpTprw_L8yAAARyPdN2Js974.png

截取字符串中从第21到37的字符


2.

   -f 实例

wKiom1dpTs2wEF_XAAAQWcV5ewk875.png

截取以空格为分隔符的第三部分


wKiom1dpTv2ywkHHAAASRNeTV2U402.png

截取以空格为分隔符的第3到6部分


wKioL1dpT0aA6be6AAAQyOF_sYY090.png

截取以 , (逗号)为分隔符的第2部分


wKioL1dpT6Tw1FaJAAAYK0zpATA231.png

截取以 , (逗号)为分隔符的第2部分之后的字符串


wKiom1dpT8rjcVNWAAAS959NI24798.png

分隔符为 ? ,因为给出的字符串中没有,所以原样输出


3.

   -s实例

wKioL1dpUAyTHqg_AAAR3PVMN6U495.png

字符串中没有给出的分隔符,则不输出。与上面第2.的第三个截图相对比


wKiom1dpUDjgZyxyAAASFypPtqY165.png

字符串中有 " " (空格)这个分隔符,则输出符合要求的字符

0 0
原创粉丝点击