linux截取字符串前20位,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  ----> 域

已创建一个文件,内容如下:

[muhui@localhost 3_26]$ cat file

abcdefg

1234567

poiuytr

使用cut截取的例子如下:[muhui@localhost 3_26]$ cat file | cut -b 3

c

3

i

[muhui@localhost 3_26]$ cat file | cut -b -3

abc

123

poi

[muhui@localhost 3_26]$ cat file | cut -b 3-

cdefg

34567

iuytr

[muhui@localhost 3_26]$ cat file | cut -b 3-5

cde

345

iuy

[muhui@localhost 3_26]$ cat file | cut -b 3-5,7

cdeg

3457

iuyr

对于单字节而言,-b和-c似乎作用是一样的,但是如果文本内出现中文的情况下,-c是可以正确输出一个汉字的,但使用-b选项输出的却是乱码,因为一个中文是两个字节。为了解决这个问题,通常-b选项和-n选项配合使用,-n用于告诉cut要截取的是n字节字符。

下面解释域的作用。在/etc/passwd文件中保存了所有的用户信息,仔细了解过的话,可以发现,每一长串是通过 : 分隔开的。我们可以认为该文件中的数据是以 : 分隔不同的域。指定域分隔符使用的是 -d 选项,-f后跟的数字格式和-b完全一致。【cut的域分隔符只能是一个字符】[muhui@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

[muhui@localhost 3_26]$ cat /etc/passwd | head -n 5 | cut -d : -f 1

root

bin

daemon

adm

lp

多余说一点,看下面的例子[muhui@localhost 3_26]$ ps

PID TTY          TIME CMD

5630 pts/2    00:00:00 bash

5739 pts/2    00:00:00 ps

[muhui@localhost 3_26]$ ps | cut -b 4

I

3

4

4

明明只有三行,却cut出了四个行内容,原因就在与每个命令其实都是父bash单独创建的一个进程,cut也不例外(内置命令除外)。

-----muhuizz整理

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值