📌  相关文章
📜  shell 脚本中的子字符串 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:05:12.280000             🧑  作者: Mango

Shell-Bash 中的子字符串

Shell-Bash 脚本中的子字符串,指的是从一个较长的字符串中截取出一个子串,可以通过不同的方式实现。本文将介绍三种常见的实现方法:变量名截取、expr 命令截取和 awk 命令截取。

变量名截取

变量名截取是通过在变量名中使用一些特殊的符号来实现的。常见的符号及作用如下:

  • ${variable:offset:length}:从变量名中的指定位置开始,截取指定长度的子串。
  • ${variable#substring}:从变量名的开头开始,删除指定的子串。
  • ${variable##substring}:从变量名的开头开始,删除最长的指定子串。
  • ${variable%substring}:从变量名的结尾开始,删除指定的子串。
  • ${variable%%substring}:从变量名的结尾开始,删除最长的指定子串。

以下代码演示了变量名截取的使用方法:

#!/bin/bash

str="hello world"

echo ${str:0:5}      # output: "hello"
echo ${str#hello}    # output: " world"
echo ${str##h*o}     # output: "rld"
echo ${str%ld}       # output: "hello wor"
echo ${str%%d*}      # output: "hello worl"
expr 命令截取

expr 命令可以用于字符截取和替换,它的语法如下:

expr match "$string" "$substring"
expr substr "$string" $position $length

其中,match 子命令可以在字符串中查找符合正则表达式的子串,并返回子串的长度;substr 子命令则是从指定位置开始截取指定长度的子串。以下代码演示了 expr 命令截取的使用方法:

#!/bin/bash

str="hello world"

expr match "$str" 'he.*'            # output: 5
expr substr "$str" 7 5              # output: "world"
awk 命令截取

awk 命令是一种文本处理工具,可以用于字符串处理,它的语法如下:

echo "$string" | awk '{print substr($0, start, end)}'

其中,substr 函数用于截取字符串中的一部分并返回。

以下代码演示了 awk 命令截取的使用方法:

#!/bin/bash

str="hello world"

echo $str | awk '{print substr($0, 7, 5)}'    # output: "world"

本文介绍了 Shell-Bash 脚本中的三种子字符串实现方法,开发者可以根据实际情况选用适合的方式。