📅  最后修改于: 2023-12-03 15:23:19.275000             🧑  作者: Mango
在编写 shell 脚本时,经常需要处理字符串。拆分字符串是其中一个常见的操作之一。在 Shell-Bash 中,拆分字符串有多种方法。
使用 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 将字符串分隔成数组:
#!/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 脚本中拆分字符串的几种方法。希望可以帮助到需要处理字符串的程序员。