Shell 字符串截取

匿名 (未验证) 提交于 2019-12-02 23:40:02

字符串区间截取

适用于知道目标字符串位置的情况
${varible:n1:n2},这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

var=hello echo ${hello:0:2} #将得到 he 

指定字符串截取

${varible##*string} 从左向右截取最后一个 string 后的字符串

${varible#*string} 从左向右截取第一个 string 后的字符串

${varible%%string*} 从右向左截取最后一个 string 前的字符串

${varible%string*} 从右向左截取第一个 string 前的字符串

如果想提取文件后缀

  • var=text.txt,则 ${var##*.}
  • var=text.tar.gz,则 ${var#*.}

cut 命令

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。  -b :输入每行第n个字节(半角,注意如果有中文将乱码)。 -c :输入每行第n个字符(适用中文)。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 -n :取消分割多字节字符(例如中文)。仅和-b标志一起使用。 
  • 字节分割 who | cut -b 1-3
  • 字符分割 who | cut -c 1-3
  • 指定分隔符分割 who | cut -d : -f 1-2

缺陷和不足

cut只擅长处理 “以一个字符间隔” 的文本内容。例如多个空格分割的文本,cut 就不能得到理想的分隔效果。

文章来源: https://blog.csdn.net/FJDJFKDJFKDJFKD/article/details/91416171
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!