shell 字符截取

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 表示字符的总个数。
结果是:http:

6. 从左边第几个字符开始,一直到结束。

echo ${var:7}

其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.aaa.com/123.htm

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

echo ${var:0-7:3}

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

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

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。
结果是:123.htm

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

[email protected]:~$ var=http://www.aaa.com/123.htm
[email protected]:~$ echo var
var
[email protected]:~$ echo $var
http://www.aaa.com/123.htm
[email protected]:~$ echo ${var#*//}
www.aaa.com/123.htm
[email protected]:~$ echo ${var#*/}
/www.aaa.com/123.htm
[email protected]:~$ echo ${var##*/}
123.htm
[email protected]:~$ echo ${var%*/}
http://www.aaa.com/123.htm
[email protected]:~$ echo ${var%/}
http://www.aaa.com/123.htm
[email protected]:~$ echo ${var%/*}
http://www.aaa.com
[email protected]:~$ echo ${var%%/*}
http:
[email protected]:~$ echo ${var:1:1}
t
[email protected]:~$ echo ${var:3:5}
p://w
[email protected]:~$ echo ${var::5}
http:
[email protected]:~$ echo ${var:5}
//www.aaa.com/123.htm
[email protected]:~$ echo ${var:0-2:5}
tm
[email protected]:~$ echo ${var:0-6:5}
23.ht
[email protected]:~$ echo ${var:0-6}
23.htm
[email protected]:~$ 
时间: 2024-10-17 09:40:12

shell 字符截取的相关文章

[Shell]字符截取命令:cut, printf, awk, sed

------------------------------------------------------------------------------------------- [cut命令] cut [选项] 文件 -f 列号        ( --field 提取第几列 ) -d 分隔符    ( --delimiter 按照指定分隔符分割列 ) vi user.txt ( 行间分隔符为制表符Tab,cut的默认分割符是制表符 ) 提取系统的用户名和uid: cut -d ":&quo

Shell 字符截取命令 awk

awk命令# awk '条件1{动作1} 条件2{动作2}….' 文件名一般使用关系表达式作为条件动作:1.格式化输出 2.流程控制语句 处理cut命令无法截取空格的列 例子:截取出磁盘使用率 df -h | grep "sda1" | awk 'BEGIN{print "this is sda1 hard use persent:"} {print $5}' | cut -f 1 -d "%" BEGIN关键字 a.在所有动作处理之前执行,可在

Shell 字符截取命令 Cut

1.Cut 命令 # cut [选项] 文件名 选项 : -f 列号 提取第几列   -d 分隔符,按照指定分隔符分割列 2.例子 cut -f 1,4 -d ":" /etc/password 表示以":"作为分隔符 提取第一列和第四列的数据 3.提取Linux下所有普通用户的用户名 cat /etc/passwd | grep "/bin/bash" | cut -f 1 -d ":" | grep -v root gre

第10章 Shell编程(2)_字符截取命令

2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认是制表符分隔. (2)应用举例 //测试文件(student.txt) ID Name gender PHP Linux MySQL Average 1 ZS M 82 95 86 87.66 2 LS F 74 96 87 85.66 3 WW M 99 83 93 91.66 ①#cut –f

shell字符串截取总结

shell中截取字符串的方法有很多中,本人对其中几种常用的进行整理总结. 0x01.grep 在文件中搜寻字符串匹配的行并输出 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep [选项][指定字串][文件] -i 不区分大小写 -v 排除指定字串 -c:只输出匹配行的计数. -n:显示匹配行及 行号. -

shell ---- 字符串截取方法归纳

SHELL --- 字符串截取 1.按指定的字符串截取(4种) ${varible##*string}  # 从左向右截取最后一个string后的字符串   <即 删除左边字符,保留右边字符> ${varible#*string}   # 从左向右截取 第一个string后的字符串     <即 删除左边字符,保留右边字符> ${varible%%string*}  # 从右向左截取最后一个string后的字符串   <即 删除右边字符,保留左边字符> ${varibl

shell中截取字符串的方法总结

shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换. ${#parameter} 上面这种可以获得字符串的长度. ${parameter%word} 最小限度从后面截取word ${parameter%%word} 最大限度从后面截取word ${parameter#word}

Shell字符串截取

shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换. ${#parameter} 上面这种可以获得字符串的长度. ${parameter%word} 最小限度从后面截取word ${parameter%%word} 最大限度从后面截取word ${parameter#word}

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

Shell 截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取. 从指定位置开始截取 这种方式需要两个参数:除了指定起始位置,还需要截取长度,才能最终确定要截取的字符串. 既然需要指定起始位置,那么就涉及到计数方向的问题,到底是从字符串左边开始计数,还是从字符串右边开始计数.答案是 Shell 同时支持两种计数方式. 1) 从字符串左边开始计数 如果想从字符串的左边开始计数,那么截取字符串的具体格式如下: ${string: start :length} 其中,stri