shell中取字符串子串的几种方式 截取substr

shell中取字符串子串的几种方式

echo "123456789" | awk '{print substr($0,5,2)}'

截取

1)awk中函数substr
substr(源字符串,开始索引,长度)   开始索引以0开始
示例:
awk '{$a=substr($0,0,2);print $a;}' filename
假设文件中为只有一行为abcdefg,则返回结果为ab


(2)expr substr 
expr substr 字符串 开始索引 长度   开始索引以1开始
示例:

expr substr "abc" 2 2
显示bc

(3)echo ${str:开始索引} 或 echo ${str:开始索引:长度}   开始索引为0
示例:
str="abc"
echo ${str:1},显示bc
echo ${str:1:2},显示bc

https://blog.csdn.net/Sharp_UP/article/details/74990277

1、cut命令截取


使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
1)、使用cut -c 可以截取以字符为单位的串区间


注:以 - 作为分隔符是截取对应区间内的串

       以 ,作为分隔符是截取对应位置的字符

2)、cut -b 用法和cut -c 相同,不同的是以字节为单位

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

echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符

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

echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符


4、 %号截取,删除右边字符,保留左边字符

echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符


5、%% 号截取,删除右边字符,保留左边字符

echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符


6、 从左边第几个字符开始,及字符的个数

echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。


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

echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束。


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

echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。


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

echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。

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

原文地址:https://www.cnblogs.com/hanxing/p/7599105.html