1.Shell 截取

例子:str=”123456789-zxcvbnm-asdfg”

格式 示例 /echo ${str} 结果 说明
${str: start :length} ${str:2:5} 34567 从str字符串的左边第 start 个字符开始,向右截取 length 个字符。
${str: start} ${str:2:5} 3456789-zxcvbnm-asdfg 从str字符串的左边第 start 个字符开始截取,直到最后。
${str:0-start:length} ${str:0-10:5} vbnm- 从str字符串的右边第 start 个字符开始,向右截取 length 个字符。
${str: 0-start} ${str:0-5} asdfg 从str字符串的右边第 start 个字符开始截取,直到最后
${str#*chars} ${str#*-} zxcvbnm-asdfg 从str字符串第一次出现 chars 的位置开始,截取 chars 右边的所有字符。
${str##*chars} ${str##*-} asdfg 从str字符串最后一次出现 chars 的位置开始,截取 chars 右边的所有字符。
${str%*chars} ${str%-*} 123456789-zxcvbnm 从str字符串第一次出现 chars 的位置开始,截取 chars 左边的所有字符。
${str%%*chars} ${str%%-*} 123456789 从str字符串最后一次出现 chars 的位置开始,截取 chars 左边的所有字符。

2.Cut 截取

说明:用于显示每行从开头算起 num1 到 num2 的文字

Cut语法

  1. cut [-bn] [file]
  2. #以字节为单位进行分割,如:1|1-4|2,3,5
  3. cut [-c] [file]
  4. #以字符为单位进行分割
  5. cut [-df] [file]
  6. #以自定义分隔符进行分割,默认为制表符

例子

模板:1.txt

  1. NAME CPU(cores) MEMORY(bytes)
  2. nginx-7f688c67-25n6h 1m 5Mi
  3. nginx-7f688c67-9dq8z 1m 5Mi
  4. nginx-7f688c67-kxcsv 1m 5Mi
  1. cut -b 1-34 1.txt

NAME CPU(cores) nginx-7f688c67-25n6h 1m
nginx-7f688c67-9dq8z 1m
nginx-7f688c67-kxcsv 1m

  1. cut -c 1,3-7 1.txt

NME
ninx-7 ninx-7 ninx-7

  1. cut -d '-' -f 1,2 1.txt

NAME CPU(cores) MEMORY(bytes)
nginx-7f688c67 nginx-7f688c67 nginx-7f688c67