欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Shell 字符串截取

程序员文章站 2024-02-24 10:42:04
...

字符串区间截取

适用于知道目标字符串位置的情况
${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 就不能得到理想的分隔效果。