📜  在 shell 脚本中拆分字符串 - Shell-Bash (1)

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

在 shell 脚本中拆分字符串 - Shell-Bash

在编写 shell 脚本时,经常需要处理字符串。拆分字符串是其中一个常见的操作之一。在 Shell-Bash 中,拆分字符串有多种方法。

方法一: 使用IFS(内部字段分隔符)

使用 IFS 可以将字符串分隔成多个字段。IFS 是一个 shell 变量,它定义了 shell 对待空格、制表符和换行符的方式。如果未定义 IFS,则默认以空格、制表符和换行符作为界定符。

#!/bin/bash

string="apple,banana,orange"

# 指定以逗号为界定符
IFS=,
read -ra array <<< "$string"

# 遍历数组并输出其中的每个元素
for i in "${array[@]}"
do
  echo "$i"
done

输出:

apple
banana
orange

注:在上面的例子中,使用 <<< 将字符串作为输入传递给了 read 命令。${array[@]} 表示遍历数组中的所有元素。

方法二:使用外部命令

Shell-Bash 通过外部命令来处理字符串也是非常方便的。例如,使用 tr 命令将逗号替换成空格:

#!/bin/bash

string="apple,banana,orange"

# 将逗号替换成空格
new_string=$(echo "$string" | tr ',' ' ')

# 输出处理后的字符串
echo "$new_string"

输出:

apple banana orange

注:在上面的例子中,使用 $(...) 来替换 new_string 的值,以便存储处理后的字符串。

方法三: 使用 awk

使用 awk 也可以轻松地处理字符串。例如,使用 awk 将字符串分隔成数组:

#!/bin/bash

string="apple,banana,orange"

# 使用 awk 将字符串分隔成数组
array=($(echo "$string" | awk -F "," '{for(i=1;i<=NF;i++) print $i}'))

# 遍历数组并输出其中的每个元素
for i in "${array[@]}"
do
  echo "$i"
done

输出:

apple
banana
orange

注:在上面的例子中,-F 参数指定了 awk 的界定符。NF 表示 awk 中区分字段的总数。

以上就是在 shell 脚本中拆分字符串的几种方法。希望可以帮助到需要处理字符串的程序员。