shell脚本中字符串截取的多种方法
1.#号截取,删除左边字符,保留右边字符。
代码:echo ${var#*//}
其中var是变量名,#是运算符,*//表示从左边开始删除第一个//及左边的所有字符
示例:
结果:
2.##截取,删除左边字符,保留右边字符
代码:echo ${var##*/}
其中##*/表示从左边开始删除最后(最右边)一个/号及左边的所有字符
示例:
结果:
3.% 号截取,删除右边字符,保留左边字符
代码:echo ${var%/*}
其中%/*表示从右边开始,删除第一个/号及右边的字符
示例:
结果:
4.%%号截取,删除右边字符,保留左边字符
代码:echo ${%%/*}
其中%%/*表示从右边开始,删除最后(最左边)一个/及右边的字符
示例:
结果:
5.从左边第几个字符开始,及字符的个数
代码:echo ${var:0:5}
其中的0表示左边第一个字符开始,5表示字符的总个数
示例:
结果:
6.从左边第几个字符开始,一直到结束
代码:echo ${var:7}
其中的7表示从左边第8个字符开始,一直到结束
示例:
结果:
7.从右边第几个字符开始,及字符的个数
代码:echo ${var:0-7:3}
其中的0-7表示从右边数起第七个字符开始,3表示字符的个数
示例:
结果:
8.从右边第几个字符开始,一直到结束
代码: echo ${var:0-7}
表示从右边第七个字符开始,一直到结束
示例:
结果:
9.cut命令主要是接受三个定位方法:
(1)字节,用选项-b
(2)字符,用选项-c
(3)域,用选项-f
示例:
这样看似乎-b和-c选项没有什么区别,其实不然,因为who输出的都是单字节字符,所以用-b和-c没有区别,若是改成中文,则只有-c可以使用了,而-b输出的是乱码。
我们所提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息就没有用了,这时就用到"域"了。
示例: