Linux下实现字符串截取方法概括
发布时间:2021-12-09 16:10:36 所属栏目:PHP教程 来源:互联网
导读:Linux下实现字符串截取,大体上可以分为两种,使用命令实现截取,使用工具实现截
Linux下实现字符串截取,大体上可以分为两种,使用命令实现截取,使用工具实现截取。具体截取方式如下: a、#截取,可以实现删除左边字符,保留右边字符 从左边第一个</>开始,删除</>及之前的所有字符 str=http://www.baidu.com/index.html echo ${str#*/} # right first / 输出: /www.baidu.com/index.html b、##截取,可以实现删除左边字符,保留右边字符 从最右边的</>开始,删除</>及之前的所有字符 str=http://www.baidu.com/index.html echo ${str##*/} # rightest / 输出: index.html c、%截取,可以实现删除右边字符,保留左边字符 从右边第一个</>开始删除</>及右边的所有字符 str=http://www.baidu.com/index.html echo ${str%/*} # left firft / 输出: http://www.baidu.com d、%%截取,可以实现删除右边字符,保留左边字符 从左边第一个</>开始删除</>及右边的所有字符 str=http://www.baidu.com/index.html echo ${str%%/*} # leftest / 输出: http: e、区间截取 截取第0~6个字符 str=http://www.baidu.com/index.html echo ${str:0:6} 输出: http:/ f、正向区间截取到结束 截取从第7个字符开始到结束 str=http://www.baidu.com/index.html echo ${str:7} 输出: www.baidu.com/index.html g、反向区间截取 截取倒数第0到第7个字符的前5个 str=http://www.baidu.com/index.html echo ${str:0-7:5} 输出: ex.ht h、反向截取,到结束 从倒数第10个字符截取到字符串结束 str=http://www.baidu.com/index.html echo ${str:0-10} 输出: index.html i、使用cut命令实现字符串截取 cut [选项] 选项: -b ----> 字节 -c ----> 字符 -f ----> 域 已创建一个文件,内容如下: [linuxidc@localhost 3_26]$ cat file abcdefg 1234567 poiuytr 使用cut截取的例子如下: [linuxidc@localhost 3_26]$ cat file | cut -b 3 c 3 i [linuxidc@localhost 3_26]$ cat file | cut -b -3 abc 123 poi [linuxidc@localhost 3_26]$ cat file | cut -b 3- cdefg 34567 iuytr [linuxidc@localhost 3_26]$ cat file | cut -b 3-5 cde 345 iuy [linuxidc@localhost 3_26]$ cat file | cut -b 3-5,7 cdeg 3457 iuyr 对于单字节而言,-b和-c似乎作用是一样的,但是如果文本内出现中文的情况下,-c是可以正确输出一个汉字的,但使用-b选项输出的却是乱码,因为一个中文是两个字节。为了解决这个问题,通常-b选项和-n选项配合使用,-n用于告诉cut要截取的是n字节字符。 下面解释域<-f>的作用。在/etc/passwd文件中保存了所有的用户信息,仔细了解过的话,可以发现,每一长串是通过 : 分隔开的。我们可以认为该文件中的数据是以 : 分隔不同的域。指定域分隔符使用的是 -d 选项,-f后跟的数字格式和-b完全一致。【cut的域分隔符只能是一个字符】 123456789101112 [linuxidc@localhost 3_26]$ cat /etc/passwd | head -n 5 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [linuxidc@localhost 3_26]$ cat /etc/passwd | head -n 5 | cut -d : -f 1 root bin daemon adm lp 多余说一点,看下面的例子 [linuxidc@localhost 3_26]$ ps PID TTY TIME CMD 5630 pts/2 00:00:00 bash 5739 pts/2 00:00:00 ps [linuxidc@localhost 3_26]$ ps | cut -b 4 I 3 4 4 明明只有三行,却cut出了四个行内容,原因就在与每个命令其实都是父bash单独创建的一个进程,cut也不例外(内置命令除外)。 ![]() (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |