Featured image of post shell字符串截取

shell字符串截取

AI 摘要
这篇名为“Shell字符串截取”的文章,详细介绍了在Shell脚本中处理字符串的多种方法。文章首先阐述了Bash内置参数扩展的强大功能,例如使用###%%%来根>据模式高效地删除字符串的前缀或后缀,并展示了${VAR:offset:length}进行子串提取。此外,作者还介绍了通过expr substr命>令进行基本的子串操作,以及如何利用cut命令进行基于字段或字符位置的截取。

前言

之前一直没太认真琢磨。觉得网上有,不会的百度下。就是抱着这种态度,简单的几个技巧现在才一知半解。

正题

shell脚本字符串截取我大概想到有如下几种方式:

  1. sed
  2. awk
  3. cut
  4. 通过# % 截取(不知道应该叫什么方法)

本文详细说明下第4种方式。为什么不说前三种呢,我个人觉得前三个命令用来截取字符串有点高射炮打蚊子。

  1. # 号截取,删除左边字符,保留右边字符,匹配第一个
eg:
var=http://www.vr7jj.com/api
str=${var#*/}

最后str为 /www.vr7jj.com/api

  1. ## 号截取,删除左边字符,保留右边字符,匹配最后一个
eg:
var=http://www.vr7jj.com/api
str=${var##*/}

最后str为 api

  1. % 号截取,删除右边字符,保留左边,匹配第一个
eg:
var=http://www.vr7jj.com/api
str=${var%/*}

最后str为 http://www.vr7jj.com

  1. %% 号截取,删除右边字符,保留左边,匹配最后一个
eg:
var=http://www.vr7jj.com/api
str=${var%%/*}

最后str为 http:

  1. 扩展 按位截取
eg:
var=http://www.vr7jj.com/api
str1=${var:0:4} #左边第0个字符开始截3个数 结果 http
str2=${var:7} #左边第7个字符一直到结束 结果 www.vr7jj.com/api
str3=${var:0-15:10}#右边第15个字符开始取10位
str4=${var:0-6}#右边第几个字符开始一直到结束

总结

记忆方法 # 号脚本中用于注释常在行开头左边。所以#是从左边开发截取; %反这从右边截取。(用的少了,脑子不好使,常忘记)

Licensed under CC BY-NC-SA 4.0
最后更新于 2024-05-03 07:44 UTC
已持续更新 · 发表109篇文章 · 总计82.39k字
 赣ICP备18015110号-1   
使用 Hugo 构建 主题 StackJimmy 设计